예 PHP로 가능합니다. 그러나 일반적인 리눅스 권한 규칙은 아파치 사용자 (nobody)가 소유하지 않은 chmod 스크립트를 찾고 아파치 사용자에게 쓰기 권한이 없다면 sudo를 사용할 수있는 권한을 아파치에게 줄 수 있습니다.
경고 - 이것은 잠재적으로 방대한 보안 구멍입니다 !!!
sudoers 파일을 편집하여 sudo 사용 권한을 apache에 부여 할 수 있습니다. 당신이 당신의 "아무도"사용자에 대한 행을 추가 할 필요가 그런
sudo visudo
을 입력 오류가 완전히 내 (우분투) 시스템에 너무 나사 남길 수 있습니다 당신이이 파일을 직접 편집하지 않는 것이 좋습니다. sudo 사용 권한을 특정 스크립트 나 폴더로 제한하여 사용 권한을 변경하기위한 쉘 스크립트를 작성한 다음 다른 스크립트와 다른 폴더에이 스크립트를 배치하는 것이 좋습니다. 그렇게하면 아파치는 시스템에 대한 완전한 루트 권한을 갖지 못한다 (이것은 꽤 무서운 생각이다). 또한 셸 스크립트에 코드를 추가하여 변경할 수있는 파일을 제한 할 수 있습니다.
또한 PHP를 통해 비밀번호를 입력 할 수있는 방법이 없기 때문에 비밀번호없이 sudo에 아파치를 허용해야합니다. 그래서 당신은 추가 할 줄은 그냥 sudo를 사용하여 명령을 앞에 PHP에서 다음
nobody ALL=(ALL)NOPASSWD:/path/to/my/script
같은
passthru ("sudo /path/to/my/script ...");
(당신이) (대신 경유의 사용할 수있는 몇 가지 다른 기능이 있습니다이었다 그냥 첫 번째로 떠오른 것)
앞서 말했듯이 이것은 잠재적으로 매우 위험 할 수 있으며 위의 작업은 효과가 있지만 그 전에는 공공 프로덕션 서버에서 사용하지 않은 채 자신의 개인 시스템에서만 사용했습니다. 많은 사람들이이 보안에 대한 의견을 갖게 될 것이므로이 방법으로 발생할 수있는 잠재적 인 함정과 보안 구멍이 무엇인지 들어보고 싶습니다. SuExec을 사용하여 비슷한 일을 할 수는 있지만 익숙하지는 않습니다. 따라서이 방법에 대한 SuExec의 장단점이 있다면 누구나 듣고 싶을 것입니다.
최종 메모 : 아무도 'apache'또는 'www'와 같은 것으로 변경했을 것입니다. 아마도 바보 같지만 nobody라는 사용자에게 루트 권한을 부여하는 아이디어가 마음에 들지 않습니다 !!!
희망이 도움이됩니다.
거기에 해결책이 있지만 PHP가 시스템 권한을 관리하게하는 것은 좋지 않습니다. 그런 일을하기 위해 무엇이 필요합니까? – Benoit
PHP를 사용하여 dymanically 디렉토리를 생성해야합니다. –