php - 告诉 SELinux 授予 Apache 对文档根目录外的 PHP 文件的执行访问权限

标签 php apache selinux

我有一个保存共享 PHP 脚本的目录(名称是任意的,但它不是/var/、/usr/或任何 SELinux 会有特定设置的目录):
/随便/脚本/

这些脚本可以由 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=file

type=SYSCALL msg=audit(1363205612.276:476923): arch=c000003e syscall=59 success=no exit=-13 a0=2431d10 a1=2431d70 a2=24301e0 a3=50 items=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)

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=file

type=SYSCALL msg=audit(1363205612.277:476924): arch=c000003e syscall=21 success=no exit=-13 a0=2431d10 a1=1 a2=0 a3=50 items=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。

最佳答案

我用这两个命令找到了解决方案:

semanage fcontext -a -t httpd_sys_script_exec_t '/whatever/scripts(/.*)?'
 
restorecon -R -v /whatever/scripts/

这允许 Apache 在该目录中执行 PHP 脚本,并在重启或系统范围的重新标记后持续存在。

关于php - 告诉 SELinux 授予 Apache 对文档根目录外的 PHP 文件的执行访问权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15395845/

相关文章:

php - 显示不带扩展名的正确 URL,如果 URL 不正确则重定向

android - 构建 AOSP 自定义 ROM

android - SElinux Android 消息解释

php - 使用PDO绑定(bind)数组

php - 从 Laravel 访问查询字符串值

android - 你如何在 Phonegap/Cordova 中使用鼠标事件?

php - UTF-8贯穿始终

php - 在 PHP 中,测试是否定义了 Apache 变量(与 .htaccess 中的 IfDefine 相同)

android - 为什么我的 Android 应用程序(具有 root 权限)无法访问/开发/输入?

php - 在 PHP 中读取的批量 XML 文件