문제

Web Browser를 통해 PHP (입증되고 성공)를 사용하여 디렉토리를 CHMod로 사용한 사람이 있습니까?

내로드 블록은 다음과 같습니다. (a) PHP 스크립트는 브라우저에서 "아무도 없음"으로 실행됩니다 (b) chmod를 원하는 디렉토리 위의 디렉토리는 FTP 사용자가 소유하고 있으며 "아무도 없음"은 그것에 대한 쓰기 권한이 없습니다.

그래서 내가 시도 할 때 CHMOD 0666/usr/www/dirownedbyftpuser/diriamtryingtochmod/ 허가가 거부됩니다

이 작업을 수행하기 위해 스크립트를 작성하고 성공적으로 실행 한 적이 있다면 코드의 저격을 나와 공유 할 수 있습니까? 고마워요 ... 몇 달 동안 이것에있었습니다.

도움이 되었습니까?

해결책

예, PHP를 통해이 작업을 수행 할 수 있습니다. 일반적인 Linux 권한 규칙 규칙은 Apache 사용자가 소유하지 않은 CHMOD 스크립트 (아무도 없음)를 찾고있을 때 적용되므로 Apache 사용자는 쓰기 권한이 없으며 한 가지 방법은 Sudo를 사용할 수있는 APACHE 권한을 부여하는 것입니다.

경고하십시오 - 이것은 잠재적으로 대규모 보안 홀입니다 !!!

Sudoers 파일을 편집하여 Apache에게 Sudo를 사용할 수있는 권한을 부여 할 수 있습니다. 이 파일을 직접 편집하지 않는 것이 좋습니다. 오류가 내 (Ubuntu) 시스템에서 완전히 망칠 수 있습니다.

sudo visudo

그런 다음 "Nobody"사용자에 대한 줄을 추가해야합니다. Sudo 권한을 특정 스크립트 또는 폴더로 제한하여 쉘 스크립트를 작성하여 권한을 변경 한 다음 다른 스크립트에서 폴더에 놓는 것이 좋습니다. 그런 식으로 Apache는 시스템에 완전한 루트 권한이 없습니다 (이것은 꽤 무서운 생각입니다). 쉘 스크립트에 일부 코드를 넣어 변경할 수있는 파일을 제한 할 수도 있습니다.

또한 PHP를 통해 암호를 입력 할 방법이 없으므로 암호없이 Apache가 Sudo를 허용해야합니다. 그래서 당신이 추가 할 라인은 같은 것입니다

nobody ALL=(ALL)NOPASSWD:/path/to/my/script

그런 다음 PHP에서는 Sudo로 명령을 접두사합니다.

passthru ("sudo /path/to/my/script ...");

(Passthru () 대신 사용할 수있는 몇 가지 다른 기능이 있습니다.

앞서 말했듯이, 이것은 잠재적으로 매우 위험하며 위의 작동이 작동하지만 공개 제작 서버에서는 결코 내 자신의 개인 시스템에서만 사용해 왔습니다. 나는 많은 사람들이 이것의 보안에 대한 의견을 가지고있을 것이라고 확신 하므로이 방법으로 다른 잠재적 인 함정과 보안 구멍이 무엇인지 듣고 싶습니다. 나는 Suexec을 사용하여 비슷한 일을 할 수 있다는 것을 알고 있지만 그것에 익숙하지 않으므로이 방법에 대해 Suexec의 장단점이나 단점이 있으면 듣고 싶습니다.

최종 참고 : Apache 사용자를 아무도 'Apache'또는 'www'와 같은 것으로 바꿀 것입니다. 아마 바보 일 것입니다.

도움이 되었기를 바랍니다!

다른 팁

예, 웹 브라우저를 통해 PHP에서 CHMOD를 할 수 있습니다. (예, 우리 모두는 그것이 나쁜 생각이 될 수 있다는 것을 알고 있습니다) ..

그러나 PHP 스크립트에 사용할 수있는 권한이있는 chmod 파일 만 할 수 있습니다! 웹 서버가 PHP를 아무도 실행하지 않으면 "Nobody"가 소유 한 파일을 Chmod 할 수 있습니다.

http://www.php.net/ftpPHP가 FTP 사용자로 로그인하고 수행 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top