SELinuxがApacheによるファイルへの書き込みを妨げる


12

SELinuxは、apacheユーザーが所有するログファイルへの書き込みを禁止しています。私がやるsetenforce 0とうまくいく。それ以外の場合、このエラーが表示されます

IOError: [Errno 13] Permission denied: '/var/www/webapp/k/site/k.log'

ファイルのセキュリティコンテキスト:

$ ll -Z k.log 
-rw-r--r--. apache apache system_u:object_r:httpd_sys_content_t:s0 k.log

ファイルは、SELinuxモードがpermissiveに設定されたときに作成されました。

apacheユーザーがそのディレクトリに書き込みできるようにセキュリティコンテキストを設定する方法は?を使用してそのディレクトリセキュリティコンテキストを設定しましたchconが、適切なファイルタイプが見つかりません。

からaudit.log

type=AVC msg=audit(1409945481.163:1561): avc:  denied  { append } for  pid=16862 comm="httpd" name="k.log" dev="dm-1" ino=201614333 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:httpd_sys_content_t:s0 tclass=file
type=SYSCALL msg=audit(1409945481.163:1561): arch=c000003e syscall=2 success=no exit=-13 a0=7fa8080847a0 a1=441 a2=1b6 a3=3 items=0 ppid=15256 pid=16862 auid=4294967295 uid=48 gid=48 euid=48 suid=48 fsuid=48 egid=48 sgid=48 fsgid=48 tty=(none) ses=4294967295 comm="httpd" exe="/usr/sbin/httpd" subj=system_u:system_r:httpd_t:s0 key=(null)

回答:



18

すでに述べたように、SELINUXにそのファイルへの書き込みを許可するように指示する必要があります。正しいことは/var/www/webapp/k/site/、タイプとしてマークすることですhttpd_sys_rw_content_t

そのディレクトリを永続的にマークhttpd_sys_rw_content_tするために、semanage fcontext -a -t httpd_sys_rw_content_t /var/www/webapp/k/site(/.*)?; restorecon -RF /var/www/webapp/k/site/ これを使用できます。これは、SELINUXバイナリポリシーの更新とファイルシステムの再ラベル付けに耐えます。


2
これは正解としてマークされているはずです。(この回答に記載されているように)ディレクトリを永続的にマークすることをお勧めします。
スキダドン

1
おそらく、シェルから括弧をエスケープする必要があります。
マイケルハンプトン

6

これにより、権限が変更されます。

chcon --type httpd_sys_rw_content_t /var/www/webapp/k/site/k.log

1
私はこのエラーを受け取ります:-bash:予期しないトークンの近くの構文エラー `( '
Derrick Miller
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.