我有一个保存共享 PHP 脚本的目录(名称是任意的,但不是 /var/、/usr/ 或任何 SELinux 具有特定设置的东西):
/whatever/scripts/
这些脚本可以由 cronjobs 执行,也可以由 Apache 或 Tomcat 执行,因此输出可以包含在网页中。
SELinux 拒绝许可:
type=AVC msg=audit(1363205612.276:476923): avc: denied { execute } for pid=6855 comm="sh" name="script.php" dev=sda3 ino=4325828 scontext=system_u:system_r:httpd_t:s0 tcontext =unconfined_u:object_r:etc_runtime_t:s0 tclass=文件
类型=SYSCALL msg=audit(1363205612.276:476923):arch=c000003e syscall=59 成功=没有退出=-13 a0=2431d10 a1=2431d70 a2=24301e0 a3=50 项= 0 ppid=23100 pid=6855 auid=4294967295 uid=48 gid=48 euid=48 suid=48 fsuid=48 egid=48 sgid=48 fsgid=48 tty=(无) ses=4294967295 comm="sh" exe=" /bin/bash" subj=system_u:system_r:httpd_t:s0 key=(null)
type=AVC msg=audit(1363205612.277:476924):avc: denied { execute } for pid=6855 comm="sh" name="script .php" dev=sda3 ino=4325828 scontext=system_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:etc_runtime_t:s0 tclass=文件
type=SYSCALL msg=audit(1363205612.277:476924):arch=c000003e syscall=21 成功=没有退出=-13 a0=2431d10 a1=1 a2=0 a3=50 项=0 ppid=23100 pid=6855 auid=4294967295 uid =48 gid=48 euid=48 suid=48 fsuid=48 egid=48 sgid=48 fsgid=48 tty=(none) ses=4294967295 comm="sh" exe="/bin/bash" subj=system_u:system_r: httpd_t:s0 key=(null)
我知道有一个命令可以用来告诉 SELinux 允许这样做,但它让我望而却步。
即使使目录和脚本所有者和组 apache 也不起作用,所以这不是典型的权限问题,而是 SELinux 特有的。
系统为CentOS 6.3。