
이것은 간단한 질문이지만 이것이 작동하지 않는 이유를 찾을 수 없는 것 같습니다.
PHP 서버의 웹 루트 내에 그룹 폴더를 설정하려고 합니다. 각 부서에는 다음과 같은 그룹이 있어야 합니다.
/srv/www/htdocs/dev/dept1
/srv/www/htdocs/dev/dept2
dept1 그룹의 모든 사용자는 dept1 폴더에 대한 읽기/쓰기 액세스 권한이 있어야 하고, dept2의 모든 사용자는 dept2 폴더에 대한 읽기/쓰기 액세스 권한이 있어야 합니다. 이를 구현하려고 시도하면서 다음과 같은 그룹을 만들었습니다.
sudo groupadd dept1
sudo useradd -G dept1 -m user1
cd /srv/www/htdocs/dev
mkdir dept1
sudo chown -R wwwrun:dept1 dept1
sudo chmod -R g+rwxs dept1
wwwrun
Apache가 실행되는 사용자입니다. 아이디어는 사용자가 부서 폴더 내에서 원하는 것을 생성/읽기/업데이트/삭제할 수 있다는 것입니다. 그러나 시도해 보면 사용자 계정은 폴더의 내용을 보고 파일을 읽을 수 있지만 파일을 만들거나 쓸 수는 없습니다.
내가 도대체 뭘 잘못하고있는 겁니까?
답변1
귀하가 부여한 권한을 통해 dept1
그룹의 사용자는 에서 파일을 생성하고 삭제할 수 있습니다 /srv/www/htdocs/dev/dept1
. 그러나 일반적인 구성에서는 이들이 생성하는 파일과 하위 디렉터리는 그룹 쓰기가 불가능합니다.
모든 사람의 파일을 변경하여 대부분의 파일을 그룹 쓰기 가능하도록 준비할 수 있습니다.우마스크환경. umask 설정에 따라 권한이 결정됩니다.~ 아니다새 파일에 제공됩니다. 일반적으로 022로 설정됩니다. 즉, 명시적으로 지정하지 않는 한 파일은 그룹 쓰기 또는 기타 쓰기가 불가능함을 의미합니다. 기본적으로 파일이 그룹 쓰기 가능하도록 이를 002로 변경할 수 있습니다. 그러나 이는 모든 사용자가 자신의 개인 그룹을 가지고 있는 경우에만 합리적입니다(그렇지 않으면 기본 그룹의 모든 사람이 사용자의 파일에 쓸 수 있습니다).
더 나은 해결책은 다음을 확인하는 것입니다.액세스 제어 목록상주하는 파일 시스템에서 활성화됩니다 (항목이 네 번째 열에 포함되어 있는지 /srv/www/htdocs/dev
확인 ). 그런 다음 그룹에 디렉터리에 대한 쓰기 권한을 부여 하고 해당 권한 부여가 디렉터리에 새로 생성된 항목에 상속되도록 ACL을 만듭니다 . 이는 umask 변경과 유사하지만 파일 시스템의 특정 위치와 연결되어 있습니다. 다음 두 명령을 실행하면 모든 일반적인 사용 사례에서 권한이 올바르게 설정됩니다.fstab
acl
srv/www/htdocs/dev/dept1
dept1
setfacl -R -m group:dept1:rwx /srv/www/htdocs/dev/dept1
setfacl -R -d -m group:dept1:rwx /srv/www/htdocs/dev/dept1
답변2
사용자가 파일에 어떻게 액세스하고 있나요? 그들은 어떻게 업데이트/생성하려고 합니까? 나는 그들이 서버에 로그인하고 있다고 가정하고 'groups' 명령을 실행하여 실제로 올바른 그룹에 있는지 확인하고 그룹이 먼저 나열되어야 한다고 가정합니다.