Linux에서 그룹 권한을 상속할 새 파일 가져오기

Linux에서 그룹 권한을 상속할 새 파일 가져오기

내 Linux 서버에 권한 문제가 있습니다. 나는 BSD에 익숙하다. 디렉터리를 그룹이 소유하고 디렉터리를 소유한 사용자가 www-data에 없으면 디렉터리에 생성된 파일은 해당 그룹의 소유가 됩니다. 웹 서버가 파일을 읽을 수 있기를 원하지만(루트로 실행되지는 않음) 사용자는 여전히 새 파일을 디렉토리에 넣을 수 있기 때문에 이는 중요합니다. 사용자를 www-data에 넣을 수는 없습니다. 왜냐하면 다른 사용자의 웹사이트를 읽을 수 있기 때문입니다.

나는 웹 서버가 모든 웹사이트를 읽을 수 있기를 원하고, 사용자가 자신의 웹사이트를 변경할 수 있기를 원합니다.

현재 폴더 권한 설정은 다음과 같습니다...

drwxr-x--- 3 john www-data 4096 Feb 17 21:27 john

이러한 방식으로 권한이 작동하는 것은 BSD의 표준 동작입니다. Linux에서 이 작업을 수행하려면 어떻게 해야 합니까?

답변1

설명하고 있는 것 같네요GID 비트 설정디렉토리에 이 기능 세트가 있으면 그 안에 생성된 모든 새 파일은 해당 그룹이 상위 디렉토리에 설정된 그룹과 동일한 그룹으로 설정되도록 강제됩니다.

$ whoami
saml

$ groups
saml wheel wireshark

권한 + 소유권으로 디렉터리 설정

$ sudo mkdir --mode=u+rwx,g+rs,g-w,o-rwx somedir
$ sudo chown saml.apache somedir
$ ll -d somedir/
drwxr-s---. 2 saml apache 4096 Feb 17 20:10 somedir/

이 디렉터리의 파일을 saml로 터치하세요.

$ whoami
saml

$ touch somedir/afile
$ ll somedir/afile 
-rw-rw-r--. 1 saml apache 0 Feb 17 20:11 somedir/afile

그러면 대략적으로 원하는 것을 얻을 수 있습니다. 설명하는 내용을 정말로 원한다면 해당 기능(ACL)을 얻기 위해 액세스 제어 목록 기능을 사용해야 한다고 생각합니다.

ACL

디렉터리 아래에 생성된 파일의 권한을 더 강력하게 제어하려면 somedir다음 ACL 규칙을 추가하여 아래와 같이 기본 권한을 설정할 수 있습니다.

앞으로

$ ll -d somedir
drwxr-s---. 2 saml apache 4096 Feb 17 20:46 somedir

권한 설정

$ sudo setfacl -Rdm g:apache:rx somedir
$ ll -d somedir/
drwxr-s---+ 2 saml apache 4096 Feb 17 20:46 somedir/

+끝에 있는 '에 주목하세요 . 이는 디렉터리에 ACL이 적용되어 있음을 의미합니다.

$ getfacl somedir
# file: somedir
# owner: saml
# group: apache
# flags: -s-
user::rwx
group::r-x
other::---
default:user::rwx
default:group::r-x
default:group:apache:r-x
default:mask::r-x
default:other::---

뒤쪽에

$ touch somedir/afile
$ ll somedir/afile 
-rw-r-----+ 1 saml apache 0 Feb 17 21:27 somedir/afile
$ 

$ getfacl somedir/afile
# file: somedir/afile
# owner: saml
# group: apache
user::rw-
group::r-x              #effective:r--
group:apache:r-x        #effective:r--
mask::r--
other::---

기본 권한( setfacl -Rdm)은 기본 권한 r-x( g:apache:rx)으로 설정되어 있습니다. 이렇게 하면 모든 새 파일의 해당 r비트만 활성화됩니다.

답변2

TL: 의사;새로운컨테이너 폴더의 그룹을 상속하는 파일은 다음을 수행합니다.

$ chmod g+s somefolder

참고: 이는 허용되는 답변에 암시되어 있으며 이는 단지 스니펫일 뿐입니다.

답변3

bsdgroupsslm의 답변을 보완하기 위해 ext2/3/4 파일 시스템에서는 파티션의 마운트 옵션을 사용하여 설명하는 BSD 동작을 복제 할 수 있습니다 . mount(1)매뉴얼 페이지 에서 :

grpid|bsdgroups and nogrpid|sysvgroups
              These options define what group id a newly  created  file  gets.
              When  grpid  is  set,  it takes the group id of the directory in
              which it is created; otherwise (the default) it takes the  fsgid
              of  the current process, unless the directory has the setgid bit
              set, in which case it takes the gid from the  parent  directory,
              and also gets the setgid bit set if it is a directory itself.

관련 정보