“sudo ls -a1 /home”权限被拒绝

“sudo ls -a1 /home”权限被拒绝

我有一个可以运行的 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-datasudoers文件中替换为apache或者all它完全失败了

/usr/bin/ls: cannot open directory /./home/: Permission denied.

非常感谢任何帮助,因为我真的很坚持这个。

答案1

中的点drwxr-xr-x.表明您正在使用 SELinux。运行 assudo没有问题,但是内核对 Apache 进程的权限限制如此之大,甚至无法逃脱该监狱。lsrootsudo

我对 SELinux 不太熟悉,无法告诉您如何解决这个问题,但如果您禁用 SELinux,那么该脚本应该可以工作。

相关内容