abcd.php
사용자/프로그램에서 파일을 실행/실행할 수는 있지만 사용자가 SFTP 또는 FTP를 사용하여 파일을 삭제하거나 다운로드할 수 없도록 파일 권한을 설정하고 싶습니다.
많은 검색을 시도했지만 완벽한 답변을 얻을 수 없었습니다.
답변1
(참고: 약간 비슷한 것 같습니다.XY 문제. 그러한 권한을 설정하게 된 실제 문제를 설명하고 싶을 수도 있습니다 abcd.php
. )
귀하의 요청이 무엇을 의미하는지 살펴보겠습니다.
- 사용자가 파일을 실행/실행할 수 있습니다.: PHP 파일의 경우 이는 파일이 다음과 같아야 함을 의미합니다.읽을 수 있는사용자로 실행되는 프로그램의 경우 다음을 사용할 수 있습니다.구현하다조금 추가했습니다. 이는 정상적인 현상이며 쉽게 수행할 수 있습니다.
- 사용자는 삭제할 수 없습니다.: 이는 파일이 다음 위치에 있어야 함을 의미합니다.사용자가 쓸 수 없는 디렉터리에 있고 사용자가 쓸 수 있는 상위 디렉터리가 없습니다.. 이는 본질적으로 파일이 사용자에게 완전히 읽기 전용인 위치에 있어야 함을 의미합니다. (사용자가 파일을 삭제하는 것을 허용하지 않으면 사용자가 파일 내용을 수정하는 것도 허용하지 않을 것입니다.)
- 사용자가 파일을 다운로드할 수 없습니다.: 불행하게도 이는 첫 번째 요구 사항과 충돌합니다. Linux 파일 권한이 파일을 읽을 수 있도록 지정하면 파일은어떤 목적으로든 읽을 수 있음: 파일 권한을 사용하여 파일을 "실행할 수 있지만 다운로드할 수 없음"으로 지정할 수 없습니다. 이 제한을 적용하려면 다른 방법을 사용해야 합니다.
파일은 웹 페이지와 함께 사용되는 경우가 많기 때문에 *.php
이러한 유형의 문제는 일반적으로 웹 서버를 별도의 사용자 계정으로 실행하고 SFTP/FTP 액세스를 완전히 비활성화함으로써 해결될 수 있습니다.웹 서버 구성실제 PHP 파일 자체는 출력되지 않고 PHP 파일을 실행한 결과만 출력됩니다.
로컬 사용자가 PHP 파일을 실행해야 하는 경우 curl http://localhost/some/path/abcd.php
사용자가 abcd.php
파일 시스템 수준에서 파일에 직접 액세스할 필요 없이 비슷한 명령을 실행하고 웹 서버 프로세스에서 파일을 실행하도록 할 수 있습니다.
로컬 스크립팅 도구로 PHP를 사용하는 경우 웹 서버를 사용하지 않고 대신 sudo
,FelixJN의 답변에 명시된 바와 같이.
답변2
문제는 이것이 PHP
결국 스크립팅 언어라는 것입니다. 즉, 실행하려면 읽을 수 있어야 합니다.
그러나 소유자를 변경하고 비밀번호 없는 sudo 실행을 허용하면 이 문제를 피할 수 있습니다. 예를 들어
$ls -a file.php
-r-x------ 1 phpuser phpuser 15 15. Sep 13:12 file.php
john
phpuser는 당신이 걱정하는 사용자 가 아닙니다 . 그럼 이런 항목이 나오네요
$cat /etc/sudoers
%phpreaders ALL=(phpuser) NOPASSWD: /path/to/file.php
원하는 사용자를 phpreaders
그룹에 추가하세요. 위 sudoers
항목을 사용하면 그룹 구성원은 phpreaders
비밀번호 없이 서버에서 스크립트를 실행할 수 있지만 ALL
다음과 같이 수행되므로 phpuser
실행은 를 john
호출하여 수행됩니다 .
sudo -u phpuser /path/to/file.php
방해가 되지 않고 방해가 된다는 점에 유의 john
하십시오 phpuser
.