3

我已经花了半天时间试图弄清楚这一点,并且我已经做了很多研究。我也熟悉有关该主题的许多现有讨论,例如: 如何以 root 身份运行 PHP exec()?

不幸的是,我发现的任何建议似乎都不适合我。

首先,我正在为规范写一些东西,所以我无法避免这样做。此外,所有机器都将存在于未连接到 Internet 的专用网络上。虽然拥有一定的安全性很重要,但最重要的是要防止错误。我的目标是配置一些“瘦服务器”。通过 PHP 脚本,我需要能够更改网络配置(静态或 DHCP)并重新启动网络。

我尝试的第一件事是编写一个 SUID root 的 C 程序。它读取、修改和写入网络配置文件。如果我以普通用户身份运行它,它工作得很好,可以访问和修改 root 拥有的文件。但是如果我从 PHP 脚本运行它,我会遇到访问错误。似乎 Apache 以某种方式阻止了 SUID root。

根据其他讨论的建议,我尝试了“sudo”方法。暂时,我将它添加到 /etc/sudoers: apache ALL=(ALL) NOPASSWD: ALL

我得到的错误是:sudo:无法打开审计系统:权限被拒绝

根据this page in Russian,这是因为像RHEL(我正在使用Fedora)这样的系统默认为sudoers的requiretty。所以我将此行添加到 /etc/sudoers: Defaults !requiretty

我仍然得到同样的错误。sudo:无法打开审核系统:权限被拒绝

我在这里完全受阻。也就是说,除非我想以 root 身份运行 Apache 本身,否则这会比其他任何事情都更不方便。

有人可以在这里提出任何建议吗?我意识到我正在尝试做的事情很奇怪。而且我敢打赌,你们中的一些人会向我指出一些用于远程配置 Fedora 机器的现有系统(现在我想到了,我现在就去研究它)。

顺便说一句,我正在运行 SELinux,因为这就是 Fedora 15 默认配置的方式。

谢谢。

编辑:
我找到了这个教程:
http ://www.cyberciti.biz/faq/howto-disable-httpd-selinux-security-protection/

不幸的是,当我运行“setsebool httpd_disable_trans 1”时,我收到错误:
无法更改活动布尔值:无效布尔值

我还尝试直接编辑不存在的“/etc/selinux/targeted/booleans”,然后重新启动apache,但这也不起作用。

4

2 回答 2

5

您是否尝试setenforce 0过(暂时禁用 SELinux)audit2allow、或完全禁用 SELinux?请参阅:PHP 网页即使在更新 sudoers 后也不会启动 unix 命令

于 2012-10-30T08:18:07.900 回答
1

在搜索了几个小时后,这对我有用。祝你好运!:)

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

restorecon -R -v /whatever/scripts/

https://stackoverflow.com/a/15424003/11249696

于 2020-03-26T05:28:36.213 回答