如何从apache(centOS)以root身份运行cmd?

我试图在CENTOS中运行“useradd”命令,但是我不能,因为我需要root权限。

在我的php_info(); 我有'–disable-posix'。 我试图重新安装我的PHP,并尝试启用与百胜和更多选项的posix,但没有运气。

有人可以帮我做POSIX启用或其他解决scheme吗? 我注意到posix_getuid(); 正在工作,但posix_setuid(); 不是。

任何解决scheme

所有我需要通过“用户点击”插入useradd到passwd(root)命令。 什么是最好和最安全的方法来做到这一点?

非常感谢!

Koren Or

你想阅读suEXEC文档: http : //httpd.apache.org/docs/2.2/suexec.html然后重新思考你的应用程序如何工作,找出一个更好/更安全的方法。

你可以使用sudo来做到这一点。 运行visudo并把类似的东西

 apache ALL = (ALL) NOPASSWD: /usr/sbin/useradd 

其实如果你有SELINUX强制执行它将无法正常工作,而不是使用useradd我会建议编写一个包装脚本正确设置环境,并在运行useradd之前进行健全性检查

我建议编写一个shell脚本,通过sudo调用useradd。

您可以将特定用户的特定命令添加到/ etc / sudoers(由visudo命令编辑)

应该是这样的:

Cmnd_Alias USERADD = /bin/sbin/useradd *

apache ALL=(USERADD) NOPASSWD:USERADD

调用useradd:

sudo /usr/sbin/useradd USERNAME

不要忘了在php脚本和shell脚本中验证你的输入。

Sudo可能会很快实施,但是很难保证,即使对于有经验的unix专家也是有缺陷的。

另一种方法是编写自己的服务器守护进程,以root用户身份运行,监听本地unix域套接字或命名管道,或者只是查找某个受保护目录中的文件。 然后从你的PHP脚本消息这个守护进程与用户名添加。 在这个守护进程中只实现最低限度的应用程序功能,以及其他一切在PHP中。 但是在你的守护进程中进行强大的输入检查,清理你的环境等等,以确保它是php应用程序调用,而不是其他人。

Sudo需要交互式运行(它需要一个密码)

您不应该以任何方式授予Web服务器的根访问权限。

Suexec是一个替代方案,但是您也可以将Web脚本写入一个文件并具有一个cron作业来解析文件并处理命令