我有一个可以运行的 php 脚本exec("bash /path/to/list.sh $dir", $out);
其内容list.sh
是...
#!/bin/bash
sudo /usr/bin/ls -a1 $@ 2>&1
我已授予 apache 以 root 身份运行 ls 的权限。这是 sudoers 文件中的条目。
www-data ALL=(ALL) NOPASSWD: /usr/bin/ls *
然而,该脚本仍然无法访问某些文件夹,例如/home/.
即使权限/home/
为
drwxr-xr-x. 40 root root 4096 Jun 5 08:24 home
来自ls -l
命令。
如果我尝试运行bash /path/to/list.sh /home
它,它会返回sudo
讲座,然后要求输入密码,尽管NOPASSWD
已输入。如果我www-data
在sudoers
文件中替换为apache
或者all
它完全失败了
/usr/bin/ls: cannot open directory /./home/: Permission denied.
非常感谢任何帮助,因为我真的很坚持这个。
答案1
中的点drwxr-xr-x.
表明您正在使用 SELinux。运行 assudo
没有问题,但是内核对 Apache 进程的权限限制如此之大,甚至无法逃脱该监狱。ls
root
sudo
我对 SELinux 不太熟悉,无法告诉您如何解决这个问题,但如果您禁用 SELinux,那么该脚本应该可以工作。