スポンサーリンク

2015年1月16日金曜日

Sambaで共有したフォルダが見えるが書き込めない原因がSELinuxである場合とその対処

 CentOS 7 に Samba を導入し、共有フォルダを作成した。

 設定各種を行い、実際に Windows からアクセスしてみたが、共有フォルダの中身は見えるものの書き込みができない。
 設定の中で共有フォルダに対して書き込みは許可しているにも関わらず、新しいフォルダを作成したりファイルの作成ができない。

 と、ここで疑わしいのが SELinux の設定。
 とりあえず SELinux を無効にして実行してみる。

# setenforce 0

 すると共有フォルダに対して書き込みが可能となる。
 というわけで原因は SELinux であることが判明。


 共有フォルダに対してフルアクセスを実現するための設定は以下の 2 つ。

1. 共有フォルダの SELinux コンテキストを変更する
2. smbd デーモンによる書き込みを許可する

 1 について、恒久的対応は後で追記するとして、とりあえず変更するために以下のコマンドを実行する。

# chcon -R -t public_content_rw_t /home/samba

 2 については以下のコマンドを実行。

# setsebool -P allow_smbd_anon_write On

 これで共有フォルダに対して書き込みが可能になるはず。


 その他、Samba 自体の設定として以下の参考にした。

CentOS 7.0 - ファイルサーバ Samba 構築!
Windowsファイルサーバー構築(Samba)
http://www.server-world.info/query?os=CentOS_7&p=samba
http://www.gamvaro.com/kswiki/index.php?%E3%83%87%E3%82%A3%E3%82%B9%E3%82%AF%E3%81%A8%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E5%85%B1%E6%9C%89%2FSamba#n4fe13f1


* 2015/01/17 追記

 1 について、設定するコンテキストとして public_content_rw_t としているが、これだと Samba 以外のアプリケーションからもアクセスできてしまう。
 Samba の共有フォルダとしてのみアクセスを許可するためには samba_share_t を利用する。

# chcon -R -t samba_share_t /home/samba

 この設定に関しては以下のサイトを参考にした。

CentOS7にSambaをインストール

 上記にもあるとおり、これは一時的なものであり、yum update などでポリシーがアップデートされると消えてしまう。
 そこで、semanage コマンドを使用して設定する。(file_contexts の内容を書き換えてくれる)

# semanage fcontext -a -t samba_share_t "/home/samba(/.*)?"

 あとはこの設定を共有ディレクトリに反映させる。

# restorecon -RF /home/samba

 ただ、この semanage コマンド。CentOS7 の最小構成ではインストールされていなかったので別途インストール。

# yum -y install  policycoreutils-python


 しかし、CentOS7 各種管理者コマンドがいろいろ変ってるなぁ。また勉強しないと。

0 件のコメント:

コメントを投稿