我正在尝试在CENTOS中运行“useradd”命令,但我不能,因为我需要root权限。
在我的php_info();
我有'--disable-posix'。我试图重新安装我的PHP,并尝试使用yum和更多选项启用posix,但没有运气。
有人可以帮我制作posix启用或其他一些解决方案吗?我注意到posix_getuid();
正在运行,但posix_setuid();
不是。
任何解决方案?
我需要通过“用户点击”将useradd
插入到passwd(root)命令中。最好和最安全的方法是什么?
非常感谢!
Koren或
答案 0 :(得分:0)
您想阅读suEXEC文档:http://httpd.apache.org/docs/2.2/suexec.html 然后重新考虑您的应用程序如何工作并找出更好/更安全的方式。
答案 1 :(得分:0)
您可以使用sudo
来执行此操作。
运行visudo
并输入类似
apache ALL = (ALL) NOPASSWD: /usr/sbin/useradd
实际上如果你有SELINUX强制执行它将无法工作,而不是使用useradd我会建议编写一个包装器脚本,它正确设置环境并在运行useradd之前进行健全性检查
答案 2 :(得分:0)
我建议写一个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脚本中验证您的输入。
答案 3 :(得分:0)
Sudo可能是一个快速实现这一目标的快速攻击,但它很难保证,即使是经验丰富的unix大师也存在陷阱。
另一种方法是编写自己的服务器守护程序,以root身份运行,侦听本地unix域套接字或命名管道,或者只是查找某个受保护目录中的文件。然后从您的php脚本中使用要添加的用户名向此守护进程发送消息。仅在此守护程序中实现最低限度的应用程序功能,以及php中的所有其他功能。但是在守护进程中进行强大的输入检查,清理你的环境等,确保它是php应用程序调用,而不是其他人。
答案 4 :(得分:-3)
Sudo需要以交互方式运行(它需要密码)
您不应以任何方式向Web服务器授予root访问权限。
Suexec是另一种选择,但您也可以让Web脚本写入文件并拥有一个解析文件并处理命令的cron作业