FTP로 작성된 파일과 디렉토리에 Apache가 읽고 쓸 수있는 올바른 권한을 어떻게 부여합니까? 나의 이해입니다. www-data 사용자는

저는 Windows 사용자입니다.이 기본적인 Linux 질문에 대해 무지하게 변명 해주십시오.

Apache2와 vsftp 만 설치된 Linux (Debian) 서버를 찾고 있습니다.

무슨 일이 일어나고 있는지 누가 파일과 폴더를 소유하고 있으며 제대로 얻을 수없는 사람과 끊임없는 싸움을하고 있습니다.

이것은 지금까지 나의 이해입니다.

  • www-data 사용자는 / var / www / html 아래의 모든 파일이 폴더에 쓰기 위해 스크립트를 실행하므로 폴더와 파일의 소유권이 필요합니다. 물론 http를 통해 페이지를 제공 할 수 있어야합니다.
  • 내 ftp 사용자 ( ftpuser 라고 )는 새 파일을 업로드 할 수 있어야하기 때문에 / var / www / html 폴더 (재귀 적)에 쓸 수있는 권한이 필요합니다.

이를 염두에두고 ftpandwww 라는 그룹을 만들고이 폴더에 모든 폴더와 파일을 넣었 습니다 . 이것은 어느 정도 작동했습니다 …

FTP 클라이언트를 사용하여 만든 새 폴더에 잘못된 권한이 있다는 사실을 제외하고는 거의 올바른 위치에 있지만 FTP 클라이언트에서 폴더를 변경하여 수정할 수는 있지만 www-data는 해당 폴더에 쓸 수 없습니다 그것들은 ftpuser 가 소유하고 있기 때문에 SSH로 들어가서 ftpandwww 그룹에 chown을 실행 시켜서 모두 행복합니다.

FTP에서 생성 한 모든 새 폴더가 올바른 권한 (774)을 갖도록 하고 ftpandwww 그룹 이 자동으로 소유 하도록하려면 (쓰기 권한이있는) 웹을 통해 업로드 및 제공 할 수있는 방법 매번 새로운 폴더와 파일?



답변

웹 루트 디렉토리에서 SetGID 권한을 사용 하여 하위로 전파하십시오.

디렉토리에 SetGID를 적용하면 사용자의 기본 그룹 멤버쉽에 관계없이 해당 디렉토리의 모든 새 항목이 상위 그룹과 동일한 그룹으로 작성됩니다.

파일 시스템 객체에 SetGID를 적용하려면 chmod권한 코드 앞에 2를 사용하십시오.
(예 : 740 => 2740).

많은 Samba 공유에서 SetGID를 사용하므로 파일에는 항상 소유자 Users그룹이 있고 그룹의 모든 구성원이 파일을 읽을 수 있습니다 (보통 2750소유자 사용자 만 파일에 쓸 수 있도록 사용 합니다).

귀하의 경우 다음과 같이 실행하십시오 (XXX를 원하는 권한으로 대체하십시오).

sudo chown -R  root:ftpandwww /var/www
sudo chmod -R 2XXX /var/www

그러면 새로운 파일과 폴더가와 같은 소유권으로 나옵니다 ftpuser:ftpandwww.

편집하다:

사용 사례에 따라 SetGID로 문제를 해결하기에 충분할 수 있지만 그룹 권한이 잘못되어 소유권이 올 바르기 때문에 한 사용자 또는 다른 사용자가 쓰기를 거부하는 문제가 계속 발생하면 최선의 방법은 파일을 생성하는 사용자 정의 UMASK .

데몬이기 때문에 사용자에 대해 UMASK를 설정하는 데 어려움이있는 경우 , 데몬 사용자의 UMASK 설정 옵션에서이 스레드를 확인하십시오 .

007그룹 구성원이 파일을 쓰고 삭제할 수 있고 비 소유자에게는 권한이 없도록하려면 마스크를 사용 하는 것이 좋습니다 .


답변