1

我有一个shell_exec()命令可以访问我的文档根目录上方的目录,所以我需要使用 sudo "as root" 来实现它。(我了解安全问题并正在采取措施解决它)。

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

我认为解决方案是 chmod 4750 由我调用的 bash 脚本,sheel_exec()但这并不能完成这项工作。

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

4

4 回答 4

2

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

chown root: /usr/bin/sudo
chmod u+s /usr/bin/sudo
于 2010-02-09T16:26:46.580 回答
1

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

<?php
    shell_exec('/path/to/your/command');
?>
于 2010-02-11T16:15:44.470 回答
0

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

chown root:root /usr/bin/sudo
chmod 4111 /usr/bin/sudo
chmod 0440 /etc/sudoers
于 2012-10-31T09:27:33.787 回答
0

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

谁拥有剧本?

网络用户是否有权使用 sudo?

于 2010-02-09T16:14:59.410 回答