작동하는 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-data
sudoers
apache
all
/usr/bin/ls: cannot open directory /./home/: Permission denied.
나는 이것에 정말로 붙어 있기 때문에 어떤 도움이라도 크게 감사하겠습니다.
답변1
안의 점은 drwxr-xr-x.
SELinux를 사용하고 있음을 나타냅니다. 로 실행하는 데에는 문제가 없지만 sudo
커널은 Apache 프로세스의 권한을 너무 많이 제한하여 해당 감옥에서 탈출하는 것조차 불가능합니다.ls
root
sudo
나는 이 문제를 해결하는 방법을 알려줄 만큼 SELinux에 익숙하지 않지만 SELinux를 비활성화하면 이 스크립트가 작동할 것입니다.