PHP shell_exec()和sudo:必须是setuid root

时间:2010-02-09 15:57:27

标签: php sudo

我有一个shell_exec()命令访问我的文档根目录上方的目录,因此我需要使用sudo“as root”来实现它。 (我理解安全问题,并采取措施解决这个问题)。

问题是当我运行shell_exec()时,我的apache error_log文件中出现“sudo:must be setuid root”错误。

我认为解决方案是chmod 4750由我的sheel_exec()调用的bash脚本,但这不起作用。

究竟什么是“sudo:必须是setuid root”试图告诉我以及我该如何解决它?

4 个答案:

答案 0 :(得分:2)

sudo可执行文件本身是setuid root吗?你可能需要

chown root: /usr/bin/sudo
chmod u+s /usr/bin/sudo

答案 1 :(得分:1)

或者,完全跳过sudo。如果您的脚本由root拥有并且设置了自己的setuid位,那么您不需要使用sudo来获取root权限。事实上,它可以更加安全;您保证您的Web用户只能使用该脚本,而无需编辑sudoers。为此,shell_exec()行删除 sudo:

<?php
    shell_exec('/path/to/your/command');
?>

答案 2 :(得分:0)

您是否检查了脚本的权限?

谁拥有该剧本?

网络用户是否拥有sudo的权利?

答案 3 :(得分:0)

要修复此问题,您需要以root身份chown和chmod sudo文件,如下所示。

chown root:root /usr/bin/sudo
chmod 4111 /usr/bin/sudo
chmod 0440 /etc/sudoers