기술 솔루션으로 rahmu와 MV의 답변을 완성하겠습니다. 다음은 UNIX와 유사한 시스템에만 유효합니다.
UNIX 파일 모드보다 강력한 도구 인 ACL을 사용하는 예를 보려면 chmod / chown 섹션을 스크롤하십시오.
웹 서버 사용자 이름 찾기
먼저 웹 서버가 실행되는 사용자 이름을 알아야합니다. 아파치를 사용하는 경우가 될 수 있습니다 apache
또는 httpd
, www-data
데비안 계열 시스템, 아파치가 대부분에 등 www-data
. nginx의 경우 일반적으로이기도 www-data
합니다.
확인하려면 다음을 시도하십시오.
ps aux | grep -E '[a]pache|[h]ttpd|[_]www|[w]ww-data|[n]ginx' | grep -v root | head -1 | cut -d\ -f1
이 명령이 리턴하는 사용자 이름이 일관성이 있는지 확인하십시오 (예를 들어, nginx 99 %의 시간을 사용하지만이 명령은 tomcat7
한 번 설치 한 Java 웹 서버를 리턴 함 ) .
웹 서버에 권한 부여 : chmod
및chown
이렇게 chmod
가지 작업을 마술 수 666 또는 777 (나쁜 문서화 / 자습서 문제의 종류에 대한 이동 -에 용액)을, 그러나하는 것은 안전하지 않습니다. 666 또는 777 권한을 부여하면 "다른 사용자"에게 액세스 권한이 부여됩니다. 따라서 Apache뿐만 아니라 ( grandmother
그리고 nsa
해당 사용자 계정이 컴퓨터에 존재하는 경우-실제로는 테스트 / 문제 해결을위한 것이 아니라면 이것을 피하십시오).
보다 구체적이고 귀하와 Apache에만 권한을 부여하는 것이 좋습니다. 파일 그룹을 변경하여 파일에 대한 모든 권한을 웹 서버에 부여하십시오. 이렇게하려면 소유자를 재귀 적으로 변경하십시오.
chown -R www-data:www-data your/folder/
그러나 대부분 그룹을 변경하여 파일에 대한 전체 액세스 권한을 유지하려고 할 수 있습니다.
chown -R yourusername:www-data your/folder/
그런 다음 적절한 권한 chmod
을 부여하여 그룹 www-data
과 동일한 권한 을 부여하십시오 . 예를 들어, 현재 모드가 640 (여러분 은 6, www-data는 4, 다른 사람은 0, -rw-r -----로 변환) 인 경우 660 (여러분은 6 , www는 6) 으로 설정하십시오. -rw-rw ----)로 변환하는 기타 데이터의 경우 data 입니다. 파일 모드에 대한 자세한 내용은 rahmu의 답변을 참조하십시오. 오래되었지만 우아한 메커니즘입니다.
로 아케인 숫자를 조작하지 않으려면 chmod
다음 구문을 사용할 수도 있습니다.
chmod -R g+rw your/folder/
"그룹에 ( g
), 폴더에 대한 +
읽기 및 쓰기 rw
권한 your/folder/
( -R
)을 재귀 적으로 추가 ( ) "한다는 의미 입니다.
90 %의 경우 충분합니다.
내가 선호하는 방법 : ACL 사용 (액세스 제어 목록)
때로는 첫 번째 해결책으로는 충분하지 않습니다. 많은 데이터를 기록하고 캐시하는 Symfony Framework 의 예를 살펴 보겠습니다 . 따라서 해당 폴더에 대한 쓰기 권한이 필요합니다.
그리고 chmod
/의 chown
당신이 (내 사용자 계정) CLI의 심포니 콘솔과 웹 (웹 서버 사용자)를 병렬로 사용하는 경우 방법은 충분하지 않을 수 있습니다. Symfony가 지속적으로 권한을 수정하기 때문에 많은 문제가 발생합니다.
이 경우 많은 UNIX 시스템에서 권한을 관리하는 고급 방법 인 ACL (Access Control List)을 사용합니다.
공식 심포니 문서에 의해 주어진 다음 명령 ( 변경하십시오 app/cache
및 app/logs
사용자의 요구에 ) :
지원하는 시스템 chmod +a
(즉, 데비안 / 우분투가 아님)
sudo chmod +a "www-data allow delete,write,append,file_inherit,directory_inherit" app/cache app/logs
sudo chmod +a "`whoami` allow delete,write,append,file_inherit,directory_inherit" app/cache app/logs
지원하지 않는 시스템에서 chmod +a
(가장 일반적)
setfacl
도구 가 필요합니다 . 기본적으로 시스템에 설치되어 있으므로 setfacl -v
명령을 사용할 수 있는지 확인하십시오.
명령을 사용할 수없는, 경우 와 우분투 14.04+를 사용하고, 당신은 단지 도구를 설치해야합니다 :
sudo apt install acl
그렇지 않으면 파티션 마운트 방법을 변경해야 할 수도 있으므로 OS 설명서를 따르십시오 ( Ubuntu documentation here ).
그리고 우리는 :
sudo setfacl -R -m u:"www-data":rwX -m u:`whoami`:rwX app/cache app/logs
sudo setfacl -dR -m u:"www-data":rwX -m u:`whoami`:rwX app/cache app/logs
나는이 방법, 만족 또는 당신의 돈을 다시 문제가 없었습니다.