나는 그것이 매우 오래된 질문이라는 것을 알고 있지만 몇 가지 자세한 설명과 함께 좋은 해결책을 추가하고 싶었습니다. 시스템과 같은 Ubuntu에서 두 개의 명령문을 실행해야하며 매력처럼 작동합니다.
Linux의 권한은 3 자리 숫자로 표시 할 수 있습니다. 첫 번째 숫자는 파일 소유자의 권한을 정의합니다. 두 번째 숫자는 특정 사용자 그룹의 권한입니다. 세 번째 숫자는 그룹의 소유자 나 구성원이 아닌 모든 사용자의 권한을 정의합니다.
웹 서버는 그룹의 구성원 인 ID로 실행되어야합니다. 웹 서버는 파일 및 디렉토리의 소유자와 동일한 ID로 실행해서는 안됩니다. Ubuntu에서는 ID www-data로 아파치를 실행합니다. 해당 ID는 권한이 지정된 그룹의 구성원이어야합니다.
파일의 내용을 변경하려는 디렉토리에 적절한 권한을 부여하려면 다음 명령문을 실행하십시오.
find %DIR% -type d -exec chmod 770 {} \;
이는 OP의 질문에서 % ROOT % / database 디렉토리에 대한 권한이 그에 따라 변경되어야 함을 의미합니다. 따라서 변경하거나 제거해서는 안되는 파일을 해당 디렉토리 내에 두지 않는 것이 중요합니다. 내용을 변경해야하는 파일에 대해 별도의 디렉토리를 만드는 것이 가장 좋습니다.
디렉터리에 대한 읽기 권한 (4)은 디렉터리 내에서 메타 데이터와 함께 모든 파일과 디렉터리를 수집 할 수 있음을 의미합니다. 쓰기 권한 (2)은 디렉토리의 내용을 변경할 수있는 권한을 제공합니다. 파일 추가 및 제거, 권한 변경 등을 의미합니다. 실행 권한 (1)은 해당 디렉토리로 이동할 수있는 권한이 있음을 의미합니다. 후자가 없으면 디렉토리로 더 깊이 들어가는 것이 불가능합니다. 웹 서버는 파일 내용을 변경해야 할 때 읽기, 쓰기 및 실행 권한이 필요합니다. 따라서 숫자 7이 필요합니다.
두 번째 진술은 OP에 대한 질문입니다.
find %DOCUMENT_ROOT%/database -type f -exec chmod 760 {} \;
문서를 읽고 쓸 수 있어야하지만 파일을 실행할 필요는 없습니다. 7은 파일 소유자에게, 6은 그룹에 제공됩니다. 웹 서버는 내용을 변경하기 위해 파일을 실행할 권한이 필요하지 않습니다. 이러한 쓰기 권한은 해당 디렉토리의 파일에만 부여되어야합니다.
다른 모든 사용자에게는 어떠한 권한도 주어서는 안됩니다.
파일을 변경할 필요가없는 디렉토리의 경우 5 개의 그룹 권한으로 충분합니다. 권한 및 몇 가지 예에 대한 문서 :
https://wiki.debian.org/Permissions
https://www.linux.com/learn/tutorials/309527-understanding-linux-file-permissions
http://www.linux.org/threads/file-permissions-chmod.4094/
php.ini
파일 액세스를 거부 할 수있는 것이 있는지 파일을 살펴본 적이 있습니까?