0

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

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

有人可以帮助我启用 posix 或其他一些解决方案吗?我注意到这posix_getuid();是有效的,但posix_setuid();不是。

有什么解决办法吗?

我需要useradd通过“用户单击”插入 passwd(root) 命令。最好和最安全的方法是什么?

非常感谢!

科伦或

4

5 回答 5

0

Sudo 可以快速实现这一点,但它很难保证安全,即使对于经验丰富的 unix 大师来说也存在陷阱。

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

于 2011-09-04T21:50:21.307 回答
0

你可以sudo用来做这个。运行visudo并放置类似的东西

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

实际上,如果您强制执行 SELINUX,它将无法正常工作,而不是使用 useradd,我会建议编写一个包装脚本,该脚本可以正确设置环境并在运行 useradd 之前进行完整性检查

于 2011-09-04T15:57:10.020 回答
0

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

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

应该是这样的:

Cmnd_Alias USERADD = /bin/sbin/useradd *

apache ALL=(USERADD) NOPASSWD:USERADD

调用用户添加:

sudo /usr/sbin/useradd USERNAME

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

于 2011-09-04T15:57:37.303 回答
0

您想阅读 suEXEC 文档:http ://httpd.apache.org/docs/2.2/suexec.html 然后重新考虑您的应用程序如何工作并找出更好/更安全的方式。

于 2011-09-04T15:47:48.480 回答
-3

Sudo 需要以交互方式运行(它需要密码)

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

Suexec 是一种替代方法,但您也可以只将 Web 脚本写入文件并使用 cron 作业来解析文件并处理命令

于 2011-09-04T16:14:45.093 回答