fc2ブログ

sambaとSELinux

sambaで共有しようとしていつも躓いている。smb.conf自体の設定をいくら変 えてもWindowsからのアクセスが拒否されて、パスワードを求められた。これ までは、時間かけてSELinuxが原因だとわかっても、SELinux自体を削除する か無効にして対処してきた。だが今回は、SELinux の設定を変更することで sambaの共有も実現することができた。
/var/www/htmlをhttpdでもアクセス可能とし、なおかつsambaでも共有するの が目的である。smb.confはguest で書き込み可能な設定にし、[www]という名 前で共有する。
以下のエラーに悩まされた。

$ tail /var/log/audit/audit.log
type=AVC msg=audit(1194332857.553:1867): avc:  denied  { search } for
pid=4183 comm="smbd" name="www" dev=dm-0 ino=5636212
scontext=user_u:system_r:smbd_t:s0
tcontext=system_u:object_r:httpd_sys_content_t:s0 tclass=dir

$ ausearch -m AVC | tail
----
time->Tue Nov  6 16:07:37 2007
type=SYSCALL msg=audit(1194332857.553:1868): arch=40000003 syscall=12
success=no exit=-13 a0=92e74b0 a1=ffffffff a2=b9f738 a3=bfa4eb90 items=0
ppid=4154 pid=4183 auid=500 uid=99 gid=0 euid=99 suid=0 fsuid=99 egid=99
sgid=0 fsgid=99 tty=(none) comm="smbd" exe="/usr/sbin/smbd"
subj=user_u:system_r:smbd_t:s0 key=(null)
type=AVC msg=audit(1194332857.553:1868): avc:  denied  { search } for
pid=4183 comm="smbd" name="www" dev=dm-0 ino=5636212
scontext=user_u:system_r:smbd_t:s0
tcontext=system_u:object_r:httpd_sys_content_t:s0 tclass=dir

$ cat /var/log/samba/hostname.log
[2007/11/06 16:07:31, 0] smbd/service.c:make_connection_snum(911)
 '/var/www/html' does not exist or permission denied when connecting to
[html] Error was 許可がありません

後述のサイトを参考にSELinuxの設定をいくら変更してもアクセスが拒否され た。試行錯誤を繰り返すなかで、共有ポイントの名前を変更して試したとこ ろ、それでもaudiot.logの name="www" が変わらないことに気付いた。それ までは、ディレクトリの設定を/var/www/htmlにしか行っていなかったのだ が、もしかしたら親ディレクトリの/var/wwwにもアクセス許可を与えなくて は駄目なのでは?と気付いて試してみたところ、やっとアクセス可能になっ た。ここまで作業開始から5時間...。駄目過ぎる。
最終的にアクセス可能になるまでの手順は以下のとおり。使用したOSは CentOS5である。

$ chmod 0777 /var/www/html
$ chown -R nobody:nobody /var/www/html
$ /usr/sbin/setsebool -P allow_smbd_anon_write=1
$ /usr/sbin/getsebool -a | grep smbd
allow_smbd_anon_write --> on
smbd_disable_trans --> off
$ chcon -t public_content_rw_t /var/www/html -R
$ chcon -t public_content_rw_t /var/www
$ ls -aZ /var/www
drwxr-xr-x  root      root    system_u:object_r:public_content_rw_t     .
drwxr-xr-x  root      root    system_u:object_r:var_t                   ..
drwxr-xr-x  root      root    system_u:object_r:httpd_sys_script_exec_t cgi-bin
drwxrwxrwx  nobody    nobody  system_u:object_r:public_content_rw_t     html
参考
第31回 「samba によるアクセス制御」

ここで、smb.confの基本的な設定はわかる。
リファレンスは smb.conf
man smb.conf でもわかる。

新SELinux入門 第5回 タイプを変更してトラブルに対処する:ITpro

ここの情報により、複数アプリからのアクセスを許可する方法がわかっ た。chconとpublic_content_rw_tがキモ。

Sambaサーバの設定

最後の方のSELinuxの設定。ausearchが役に立った。

スポンサーサイト



sambaでLinux側でファイル共有を利用する

以前やったときは違う方法だった気がするけど、今は簡単。
CentOS LinuxでWindowsファイル共有に関するメモ


samba3.xについて

■Samba3.0

@IT:Samba 3.0の全貌 改訂版[前編](1/3)

■参考