/var(또는 다른 폴더)의 파일에 있는 /var/www/ 폴더(www 사용자로)에서 PHP 함수를 호출합니다(루트 권한이 있습니까?).

/var(또는 다른 폴더)의 파일에 있는 /var/www/ 폴더(www 사용자로)에서 PHP 함수를 호출합니다(루트 권한이 있습니까?).

/var/www/xyz를 "트래버스"하고 폴더 등을 검색하는 스크립트를 작성했습니다. 이러한 폴더는 "사용자에게 바인딩"되어 있으므로 개별 폴더에 대한 권한은 특정 사용자에게 설정됩니다.

이 스크립트를 루트(예: /root의 'php myscript.php')로 실행하면 예상한 결과가 반환됩니다.

이제 결과를 브라우저로 전송하고 싶습니다. /var/www/newfolder에서 index.php 파일을 생성하고 스크립트를 이 파일에 붙여 넣은 다음 (브라우저에서) 시도했지만 물론 실패했습니다. 결과의 일부만 표시됩니다(드릴다운하지 않을 때 사용자별 폴더 이름 표시). 이것은 www 사용자로서 허가 사항임이 확실합니다.

휴, 그렇다면 질문은 이렇습니다. 함수(예를 들어)가 포함된 파일을 /var에 넣고 브라우저의 www 사용자가 해당 함수를 호출하도록 허용할 수 있습니까? 그렇다면 유용한 링크나 팁이 있습니까? (오랜 시간 동안 구글링을 해봤지만 쓸모가 없는 것을 발견했습니다)

또는

내 /var/www/newfolder/에서 함수를 호출하면 사용자 폴더를 검색할 수 있는 충분한 권한이 있습니까? (보안상 중요한 것 같아요)

답변1

보안에 대해 걱정하는 것이 옳습니다. setuid 비트를 사용하여 실행 파일을 호출한 사용자 대신 실행 파일의 소유자로 실행되는 실행 파일을 만들 수 있습니다. 실행 파일을 루트가 소유한 경우 루트로 실행됩니다(루트 이외의 누구에게도 쓰기 권한을 부여하지 않도록 주의). 실행 파일을 실행할 수 있는 사람을 제한하려면 그룹 권한을 사용하십시오.

chmod o+s <path to script>setuid 비트를 켜는 데 사용됩니다 . ( chmod 4750 <path to script>소유자 그룹은 파일 소유자로서 파일을 읽고 실행할 수 있지만, 다른 사용자는 접근이 허용되지 않습니다.)

루트로 스크립트를 실행할 필요가 없는 방법은 www 사용자가 폴더의 내용을 읽을 수 있도록 검색할 폴더의 그룹 소유자와 권한을 설정하는 것입니다. 폴더에 setgid 비트를 사용하면 해당 폴더에 생성된 모든 파일과 폴더가 그룹 소유권을 상속하게 됩니다.

chmod g+s <path to folder>setgid 비트를 켜는 데 사용됩니다 . /var/www/폴더(및 하위 폴더)를 그룹으로 설정 하고 www-user그룹의 사용자가 모든 폴더에 액세스할 수 있도록 허용하려면 루트로 다음을 사용하십시오.

chgrp -R www-user /var/www/
chmod -R g+srX /var/www/

관련 정보