site1의 소유권을 확인하면 다음과 같은 내용이 표시됩니다.
ls -ld /var/www/site1/
drwxr-xr-x 2 root root 4096 Oct 24 21:06 site1/
이는 디렉토리가 사용자 루트, 그룹 루트가 소유 함을 의미합니다. 루트 사용자에게는 디렉토리에 대한 쓰기 권한 (읽기 및 실행 권한)이 있지만 그룹 루트에는 읽기 및 실행 권한 만 있습니다.
그룹 소유권을 다른 (새) 그룹 으로 변경하고 user1을 해당 특정 그룹에 추가하려고합니다. 우리는 그 특정 그룹에게도 서면 허가를 줄 것입니다.
새 그룹을 만들고
sudo addgroup site1
새로 작성된 그룹에 user1을 추가하십시오.
sudo adduser user1 site1
user1이 실제로 해당 그룹에 있는지 확인하십시오.
groups user1
출력은 다음과 같은 목록이어야합니다.
user1 : <other-groups> site1
이제 원하는 디렉토리의 그룹 소유권을 변경할 수 있습니다.
sudo chown -vR :site1 /var/www/site1/
changed ownership of `/var/www/site1/' from root:root to :site1
이 새 그룹 소유자에게 쓰기 권한을 부여하십시오.
sudo chmod -vR g+w /var/www/site1/
mode of `/var/www/site1/' changed from 0755 (rwxr-xr-x) to 0775 (rwxrwxr-x)
모든 변경 사항이 실제로 있는지 확인하십시오.
ls -ld /var/www/site1/
drwxrwxr-x 2 root site1 4096 Oct 24 21:06 /var/www/site1/
따라서 디렉토리는 이제 사용자 루트 그룹 site1이 소유합니다. 사용자 root 및 그룹 site1은 모두 디렉토리에 대한 쓰기 권한 (읽기 및 실행 권한)을 갖습니다. site1 그룹에 속한 모든 사용자는 해당 그룹에 부여 된 모든 권한을 갖습니다.
이제 user1로 로그인하고 site1 디렉토리로 이동 한 후 해당 디렉토리에 파일을 작성하십시오.
echo "My User1 Site" > index.html
bash: index.html: Permission denied
기본 user1 그룹이 site1이 아니기 때문에 실패했습니다. 따라서 해당 그룹으로 변경하십시오.
newgrp - site1
파일을 다시 작성하십시오 (그룹을 변경 한 후 user1의 홈 디렉토리로 이동했음을주의하십시오). 이제 작동합니다. 작성된 파일에는 세계 읽기 권한이 있으므로 아파치 (또는 웹 서버)는 파일 액세스에 문제가 없어야합니다.
편집하다
또한 의견에서 dan08이 지적한 것처럼 site1 그룹에 www-data를 추가해야합니다.
sudo adduser www-data site1
많은 (전부는 아님) 배포에서 www-data는 Apache 웹 서버가 실행되는 사용자입니다. 또한 Apache (특히 PHP 스크립트 포함)가 수행하는 모든 작업은 기본적으로 사용자 www-data (및 그룹 www-data)의 권한으로 수행됩니다. WordPress는 사용자 www-data를 사용하여 파일을 씁니다.
Apache 웹 서버가 어떻게 실행되고 있는지 보려면 명령을 실행하십시오.
ps aux | grep apache2 | less