FTP로 생성된 파일과 디렉터리에 Apache가 읽고 쓸 수 있는 올바른 권한을 부여하려면 어떻게 해야 합니까?

FTP로 생성된 파일과 디렉터리에 Apache가 읽고 쓸 수 있는 올바른 권한을 부여하려면 어떻게 해야 합니까?

저는 Windows 사용자에 가깝습니다. 따라서 이 기본적인 Linux 질문에 대한 무지함을 이해해 주시기 바랍니다.

저는 Apache2와 vsftp만 설치된 Linux(Debian) 서버를 관리하고 있습니다.

무슨 일이 일어나고 있는지는 파일과 폴더를 소유한 사람과 끊임없이 싸우고 있는데 제대로 할 수 없는 것 같습니다.

이것이 지금까지 나의 이해입니다:

  • www-데이터/var/www/html 아래의 모든 파일은 해당 폴더에 써야 하는 스크립트를 실행하므로 사용자는 폴더와 파일의 소유권이 필요합니다. 물론 http를 통해 페이지를 제공할 수 있어야 합니다.
  • 내 FTP 사용자(전화하자ftpuser) 또한 새 파일을 업로드하려면 /var/www/html 폴더(재귀적)에 쓸 수 있는 권한이 필요합니다.

이를 염두에 두고 저는 다음과 같은 그룹을 만들었습니다.ftpandwww모든 폴더와 파일을 이 그룹에 할당했습니다. 이것은 어느 정도 효과가 있었습니다...

FTP 클라이언트를 사용하여 만든 새 폴더에 잘못된 권한이 있지만(FTP 클라이언트에서 변경하여 수정할 수 있음) www-data가 해당 폴더에 쓸 수 없다는 사실을 제외하면 거의 올바른 위치에 있습니다. 왜냐하면 그들은 소유하고 있기 때문이다.ftpuser결국 SSH를 통해 chown to ftpandwww 그룹을 실행하여 둘 다 만족하게 되었습니다.

FTP에서 생성한 모든 새 폴더에 올바른 권한(774)을 부여하고 자동으로 소유하게 하려면 어떻게 해야 합니까?ftpandwww매번 새 폴더와 파일을 모두 삭제하지 않고도 웹(쓰기 권한 포함)을 통해 업로드하고 제공할 수 있도록 그룹화하시겠습니까?

답변1

사용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그룹 구성원이 파일을 쓰고 삭제할 수 있도록 하고 소유자가 아닌 사람에게는 권한을 부여하지 않으려면 마스크를 권장합니다 .

관련 정보