【发布时间】:2014-08-19 13:57:03
【问题描述】:
我正在从浏览器调用一个 PHP 文件,该文件正在搜索一些子目录并使用 chmod 将它们的权限更改为 777。该过程在用户“www-data”下运行 我已经(暂时!!)允许“www-data”在 /etc/sudoers 文件中拥有正确的权限,但仍然无法获得更改的权限。
<?php
shell_exec("find /home/path -type d -name Directory_name_to_search_for -print0 | xargs -0 sudo chmod 777");
?>
这与我调用 sudo 的位置有关吗?
【问题讨论】:
-
你检查
find是否真的找到了什么? -
是 - 从命令行打印出一长串目录名称,但中间没有空格。
-
意料之中,
print0强制find使用 null (\0) 作为文件名间分隔符,xargs 在-0模式下使用,因此文件名中的空格不会' t 被视为文件名分隔符。既然 find 工作正常,那么你的 sudo 设置就会出现问题。 -
好的 - sudo 设置确实不正确 - 非常感谢你现在已经修复了。