"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

루트로 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-datasudoersapacheall

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

나는 이것에 정말로 붙어 있기 때문에 어떤 도움이라도 크게 감사하겠습니다.

답변1

안의 점은 drwxr-xr-x.SELinux를 사용하고 있음을 나타냅니다. 로 실행하는 데에는 문제가 없지만 sudo커널은 Apache 프로세스의 권한을 너무 많이 제한하여 해당 감옥에서 탈출하는 것조차 불가능합니다.lsrootsudo

나는 이 문제를 해결하는 방법을 알려줄 만큼 SELinux에 익숙하지 않지만 SELinux를 비활성화하면 이 스크립트가 작동할 것입니다.

관련 정보