我在家中的/ var / www / html / ict中有一个已挂载的目录。允许用户权限很好,但仍然通过Web浏览器出现403错误。
我怀疑SELinux不允许来自其他位置的文件和目录。您能帮我添加相关权限,以便此问题得以解决。
审核文件中的错误日志:
type=AVC msg=audit(1395610534.041:179195): avc: denied { search } for pid=18370 comm="httpd" name="upload" dev=dm-0 ino=2506938 scontext=unconfined_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:user_home_t:s0 tclass=dir
type=SYSCALL msg=audit(1395610534.041:179195): arch=c000003e syscall=4 success=no exit=-13 a0=7ffb5f863bc8 a1=7fff80a374c0 a2=7fff80a374c0 a3=0 items=0 ppid=3075 pid=18370 auid=0 uid=48 gid=48 euid=48 suid=48 fsuid=48 egid=48 sgid=48 fsgid=48 tty=(none) ses=1 comm="httpd" exe="/usr/sbin/httpd" subj=unconfined_u:system_r:httpd_t:s0 key=(null)
type=AVC msg=audit(1395610534.043:179196): avc: denied { getattr } for pid=18370 comm="httpd" path="/var/www/html/ict/farengine" dev=dm-0 ino=2506938 scontext=unconfined_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:user_home_t:s0 tclass=dir
type=SYSCALL msg=audit(1395610534.043:179196): arch=c000003e syscall=6 success=no exit=-13 a0=7ffb5f863cb0 a1=7fff80a374c0 a2=7fff80a374c0 a3=1 items=0 ppid=3075 pid=18370 auid=0 uid=48 gid=48 euid=48 suid=48 fsuid=48 egid=48 sgid=48 fsgid=48 tty=(none) ses=1 comm="httpd" exe="/usr/sbin/httpd" subj=unconfined_u:system_r:httpd_t:s0 key=(null)
最佳答案
不是简单地提供一个链接,而是不完全剥夺该链接的内容,而是失败了。
安装包含SEMANAGE的policycoreutils-python,以允许设置允许Apache读取或读写DocumentRoot外部区域的策略。
yum install -y policycoreutils-python
文章还提到了解决问题的程序包,但是我的机器找不到它。
为DocumentRoot之外的属于应用程序的只读区域创建策略
semanage fcontext -a -t httpd_sys_content_t "/webapps(/.*)?"
创建用于记录目录的策略
semanage fcontext -a -t httpd_log_t "/webapps/logs(/.*)?"
为缓存目录创建策略
semanage fcontext -a -t httpd_cache_t "/webapps/cache(/.*)?"
为DocumentRoot之外的读/写区域创建策略
semanage fcontext -a -t httpd_sys_rw_content_t "/webapps/app1/public_html/uploads(/.*)?"
使用restorecon命令应用策略
restorecon -Rv /webapps
验证策略已被应用
ls -lZ /webapps
简而言之就是这样。但是,original article更易于阅读。
关于apache - 配置SELinux访问,以便Apache可以访问安装的目录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22597482/