我有一个shell_exec()
命令访问我的文档根目录上方的目录,因此我需要使用sudo“as root”来实现它。 (我理解安全问题,并采取措施解决这个问题)。
问题是当我运行shell_exec()
时,我的apache error_log文件中出现“sudo:must be setuid root”错误。
我认为解决方案是chmod 4750由我的sheel_exec()
调用的bash脚本,但这不起作用。
究竟什么是“sudo:必须是setuid root”试图告诉我以及我该如何解决它?
答案 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