그래서 나는 / var / www (cake라고 함)에 디렉토리를 가지고 있고 www-data에 쓰기를 허용해야합니다. 내 컴퓨터의 다른 사용자 (또는 해커)가 해당 디렉터리의 파일을 수정하려고 할 경우 권한을 777로 변경하는 것이 두렵습니다. 나 자신과 Apache의 www-data에 대한 액세스 만 허용하려면 어떻게해야합니까?
답변
sudo chown -R yourname:www-data cake
그때
sudo chmod -R g+s cake
첫 번째 명령은 소유자와 그룹을 변경합니다.
두 번째 명령은 동일한 그룹 권한을 가진 cake 내에 새 파일과 디렉토리를 유지하는 s 속성을 추가합니다.
답변
Slicehost의 기사 에서 언급했듯이 :
사용자 설정
이제 Apache 사용자 그룹에 기본 사용자를 추가하여 시작하겠습니다.
sudo usermod -a -G www-data demo
그러면 사용자 ‘demo’가 ‘www-data’그룹에 추가됩니다. 위에 표시된 usermod 명령과 함께 -a 및 -G 옵션을 모두 사용해야합니다.
그룹 변경을 활성화하려면 로그 아웃했다가 다시 로그인해야합니다.
지금 그룹을 확인하십시오.
groups ... # demo www-data
그래서 이제 저는 두 그룹의 구성원입니다. 내 그룹 (데모)과 아파치 그룹 (www-data)입니다.
폴더 설정
이제 public_html 폴더가 기본 사용자 (demo)가 소유하고 Apache 그룹 (www-data)의 일부인지 확인해야합니다.
설정해 보겠습니다.
sudo chgrp -R www-data /home/demo/public_html
권한에 대해 이야기하면서 sudo 명령에 대한 간단한 메모를 추가하겠습니다. 상대 경로 (~ / public_html)보다는 위에 표시된대로 절대 경로 (/ home / demo / public_html)를 사용하는 것이 좋습니다. sudo가 올바른 위치에서 사용되고 있는지 확인합니다.
symlink가있는 public_html 폴더가있는 경우 해당 명령이 symlink를 따르므로주의하십시오. 작업중인 public_html 폴더의 경우 각 폴더를 직접 변경하십시오.
Setgid
지금까지는 좋지만 방금 지정한 명령은 기존 폴더에만 영향을줍니다. 새로운 것은 어떻습니까?
소유권을 설정하여 새로운 모든 것이 ‘www-data’그룹에도 포함되도록 할 수 있습니다.
첫 번째 명령은 “setgid”비트를 포함하도록 public_html 디렉토리에 대한 권한을 변경합니다.
sudo chmod 2750 /home/demo/public_html
그러면 새 파일에 ‘www-data’그룹이 지정됩니다. 하위 디렉터리가있는 경우 각 하위 디렉터리에 대해 해당 명령을 실행해야합니다 (이 유형의 권한은 ‘-R’과 함께 작동하지 않음). 다행히 새 하위 디렉터리는 ‘setgid’비트가 자동으로 설정되어 생성됩니다.
예를 들어, 업로드 디렉토리에 대한 Apache에 대한 쓰기 액세스를 허용해야하는 경우 다음과 같이 해당 디렉토리에 대한 권한을 설정합니다.
sudo chmod 2770 /home/demo/public_html/domain1.com/public/uploads
새 파일에 올바른 소유권이 자동으로 할당되므로 권한은 한 번만 설정하면됩니다.