www-data 및 내 사용자에게 /var/www 파일 액세스 권한을 부여하시겠습니까?

www-data 및 내 사용자에게 /var/www 파일 액세스 권한을 부여하시겠습니까?

내 PHP 코드를 저장할 수 있는 폴더나 수정할 수 있게 하려는 파일은 www-data의 소유여야 합니다. sudo 없이 내가 만들거나 편집하려는 모든 것이 내 사용자의 소유이기 때문에 이는 짜증나는 일입니다.

반면에 우리 학교 서버에는 사용자가 소유한 모든 것이 표시되지만 이와 같은 문제는 결코 발생하지 않습니다. www-data는 소유자가 아님에도 불구하고 내용을 저장하거나 수정하는데 아무런 문제가 없는 것 같습니다.

모든 콘텐츠에 대한 소유권을 유지하면서 www 데이터에 대한 액세스를 방해하지 않는 /var/www 사이트를 이와 같이 작동하게 하려면 어떻게 해야 합니까?

답변1

제가 일반적으로 웹 서버에서 사용하는 솔루션은 ACL을 사용하는 것입니다. 기본적으로 이는 다른 시스템에서 사용하는 일반적인 사용자 그룹 외에 추가 권한 세트를 사용하는 것을 의미합니다. 제한된 PHP 액세스를 설정할 때(예: suPHP 사용) 이 기능이 특히 유용하다고 생각합니다.

내 파일의 소유권을 유지하기 위해 해당 파일이 내 소유인지 확인합니다.

$ chown me:me /var/www -R

그런 다음 모든 곳에서 읽기 액세스 권한을 부여합니다 www-data(디렉토리에 대한 액세스 권한도 부여합니다. 때로는 더 세부적인 설정이 필요할 수도 있습니다).

$ setfacl -Rdm 'u:www-data:r-X' /var/www
$ setfacl -Rm 'u:www-data:r-X' /var/www

나는 또한 내가 쓰고 싶은 모든 것에 대해 Apache 쓰기 액세스 권한을 부여했습니다. 예를 들어:

$ setfacl -Rdm 'u:www-data:rwX' /var/www/uploads
$ setfacl -Rm 'u:www-data:rwX' /var/www/uploads

ACL을 사용하려면 acl파일 시스템이 이 옵션으로 마운트되어 있는지 확인해야 합니다. 이 작업은 다음에서 수행됩니다 /etc/fstab.

# <file system> <mount point>   <type>  <options>       <dump>  <pass>
/dev/sdxy       /var            ext4    defaults,acl    0       2

( /var다른 파티션에 있다고 가정하고 그렇지 않은 경우 참조 /)

그런데 일부 시스템에서는 이 acl옵션이 기본적으로 설정되어 있습니다.예를 들어:

Ubuntu 14.04 및 ext4부터는 acl이 이미 기본값이므로 위의 내용이 필요하지 않습니다.

tune2fs다음 명령을 사용하여 파일 시스템(ext* FS로 가정)에서 ACL이 활성화되어 있는지 확인할 수 있습니다 .

# tune2fs -l /dev/sdxy | grep acl
Default mount options: acl ...

자세한 내용은 setfacl,이봐.

답변2

(당신이 제어하는 ​​기계에서) 할 수 있는 가장 간단한 일은 다음과 같습니다.

  • www-data계정의 그룹에 그룹 ID를 추가 하고 폴더 그룹을 쓰기 가능하게 만듭니다(예: ) chmod 775.

  • 또는 자신이 소유한 디렉토리를 가리키도록 변경하여 해당 디렉토리를 읽을 수 있는지(및 스크립트가 실행될 수 있는지) DocumentRoot확인할 수 있습니다.www-data

이들 중 어느 것도 실제 서버에 대한 만족스러운 솔루션이 아닙니다(충분히 안전하지 않습니다).

관련 정보