torutkのブログ

ソフトウェア・エンジニアのブログ

SELinuxとWebとSamba

UNIXの伝統的なセキュリティ制御では立ち行かない今日では、SELinuxによるセキュリティが不可欠ですが、使わないと覚えないので、あえて有効のままにしています。

いつの間にか、apacheのWebディレクトリにsambaからアクセスできない

当初、Web用ディレクトリ(/var/www/html)にSambaからアクセスできるセキュリティコンテクストを設定してアクセス確認していたのですが、先日アクセスできなくなっていました。
Samba側のログ(/var/log/samba/xxx.log)を見ると、以下のようにエラーとなっています。

[2009/09/14 09:02:09, 0] smbd/service.c:make_connection_snum(1003)
  '/var/www/html' does not exist or permission denied when 
connecting to [www] Error was Permission denied

SELinux側のログ/var/log/audit/audit.logを確認すると、

type=AVC msg=audit(略): avc:  denied  { search } for  pid=略 
comm="smbd" name="www" dev=dm-0 ino=略
scontext=system_u:system_r:smbd_t:s0 
tcontext=system_u:object_r:httpd_sys_content_t:s0 tclass=dir

となっています。

/var/www/htmlの設定は、

drwxr-xr-x  root  root system_u:object_r:public_content_t html

とpublic_content_tにすることでアクセス可能にしていたはずです。

調べると、ちょうど同じ現象にはまった人の記述がありました。
http://memolet.blog22.fc2.com/blog-category-108.html

ここを見ると、一つ上のディレクトリ/var/wwwにも、sambaからアクセスできる設定が必要とのことです。

# chcon -t public_content_t /var/www

としたら、Sambaからアクセス可能になりました。
Sambaが、アクセス可能なポイントの上のディレクトリをさわりにいくためのようです。