디렉터리의 모든 새 파일을 그룹에서 액세스할 수 있도록 설정

디렉터리의 모든 새 파일을 그룹에서 액세스할 수 있도록 설정

두 명의 사용자 Alice와 Bob이 있고 GROUPNAME 그룹과 폴더가 있다고 가정합니다 foo. 두 사용자 모두 GROUPNAME의 구성원입니다(Linux 및 ext3 사용).

사용자 Alice 로 파일을 저장하면 foo권한은 다음과 같습니다 -rw-r--r-- Alice Alice. 그러나 특정 하위 디렉터리에 저장된 모든 파일에 foo권한 -rwxrwx--- Alice GROUPNAME(예: 소유자 Alice, 그룹 GROUPNAME) 이 있도록 구현하는 것이 가능합니까 ?

답변1

가능하다면ACL(액세스 제어 목록).

Linux에서는 사용 중인 파일 시스템이 ACL을 지원하는지 확인하십시오(대부분의 UNIX 파일 시스템은 지원함). ACL을 활성화하려면 마운트 옵션을 변경해야 할 수도 있습니다. ext2/ext3/ext4의 경우2.6.39부터 ACL은 커널에서 기본적으로 활성화됩니다.. 이전 커널에서는 마운트 옵션을 명시적으로 지정해야 할 수 있으므로 재부팅하지 않고 ACL을 활성화하려면 acl의 항목이 .Run 과 /etc/fstab같아야 합니다 . 또한 일반적으로 이라는 패키지에 제공되는 ACL 명령줄 도구를 설치합니다 ./dev/sda1 / ext4 errors=remount-ro,acl 0 1mount -o remount,acl /getfaclsetfaclacl

이제 일회성 설정이 완료되었으므로 디렉터리의 ACL을 변경하여 그룹에 쓰기 권한을 부여하고 새로 생성된 파일이 이러한 권한을 상속받도록 하세요. 리눅스에서:

setfacl -d -m group:GROUPNAME:rwx /path/to/directory
setfacl -m group:GROUPNAME:rwx /path/to/directory

ACL이 옵션이 아닌 경우 디렉터리를 그룹 소유로 만들고 GROUPNAME해당 권한을 2775 또는 2770으로 설정합니다 chmod g+rwxs /path/to/directory. 여기서 이것이 의미하는 것은 s디렉토리에 대한 setgid 비트입니다. 이는 이 디렉토리에 생성된 파일이 디렉토리를 소유하는 그룹에 속한다는 것을 의미합니다.

또한 Alice와 Bob의 설정도 설정해야 합니다.마스크기본적으로 모든 파일 그룹을 쓰기 가능하게 만듭니다. 대부분의 시스템에서 기본 umask는 022입니다. 이는 파일이 그룹별 쓰기 및 기타 권한을 제외한 모든 권한을 가질 수 있음을 의미합니다. 002로 변경하면 다른 권한이 있는 쓰기만 금지됩니다. 일반적으로 이 설정을 다음 항목에 넣습니다 ~/.profile.

umask 002    # or 007 to have files not readable by others

답변2

디렉토리를 생성하여 할당된 권한 비트 umask및 그룹을 제어할 수 있습니다.설정도착하다 GROUPNAME.

$ umask 002            # allow group write; everyone must do this
$ chgrp GROUPNAME .    # set directory group to GROUPNAME
$ chmod g+s .          # files created in directory will be in group GROUPNAME

chgrp각 하위 디렉터리에 대해 /를 수행해야 합니다 . chmod이는 기존 디렉터리에 자동으로 전파되지 않습니다. OS X에서는 이후에 다음 디렉터리 아래에 디렉터리를 만듭니다.설정디렉토리는 다음과 같습니다.설정, 후자는 그룹에 속하지만 GROUPNAME. 대부분의 Linux 배포판에서는설정비트가 새 하위 디렉터리로 전파됩니다.

또한 이는 umask프로세스 속성이며 해당 프로세스와 해당 하위 프로세스에서 생성된 모든 파일에 적용됩니다(이러한 파일은 umask상위 프로세스 fork()에서 사실상 상속 받습니다). 사용자는 에서 이를 설정해야 할 수 있으며 ~/.profile, 다른 권한이 필요한 디렉토리와 관련되지 않은 사항에 주의해야 할 수도 있습니다. 기준 치수다른 작업을 수행할 때 다른 설정이 필요한 경우 유용할 수 있습니다.

POSIX ACL을 사용할 수 있다면 권한 마스크와 그룹을 지정하고 이를 현명하게 전파하는 것이 가능해집니다. 그러나 POSIX ACL에 대한 지원은 다소 다릅니다.

답변3

이 질문은 Linux에 매우 적합합니다.acl. 운영 체제를 지정하지 않았으므로 다음에서는 Linux를 가정하겠습니다. 이것은 샘플 세션입니다.

나는 정말 좋은 튜토리얼을 모르지만 acl, 당신은 그보다 더 잘할 수 있습니다Van Emery의 "Fedora Core 2(Linux 커널 2.6.5)에서 ACL 사용".

기본값은 acl로컬 umask처럼 동작합니다. 적어도 Linux에서는 umask가 전역적으로 적용되므로 이것이 로컬 umask의 효과를 얻을 수 있는 유일한 방법입니다. 어떤 이유로 이것은 잘 알려지지 않은 기능입니다. 웹에는 지역 umask 적용 범위에 대해 문의하는 사람들이 많지만 이를 사용하는 것을 고려하는 사람은 거의 없는 것 같습니다 acl.

또한 지원과 함께 사용 중인 파티션을 설치해야 합니다 acl.

/dev/mapper/debian-acl /mnt/acl        ext3    defaults,acl        0       2

회의 내용은 다음과 같습니다.

/mnt/acl$ mkdir foo
/mnt/acl$ getfacl foo
# file: foo
# owner: faheem
# group: faheem
user::rwx
group::r-x
other::r-x

foo그룹으로 설정하고 staffacl을 그룹과 사용자로 설정합니다.foorwx

/mnt/acl$ chgrp staff foo
/mnt/acl$ setfacl -R -m u::rwx,g::rwx foo
/mnt/acl$ getfacl foo
# file: foo
# owner: faheem
# group: staff
user::rwx
group::rwx
other::r-x

사용자 및 그룹에 대한 기본 ACL rwx도 설정합니다. 이는 파일 및 디렉토리에 대한 상속된 권한을 정의합니다 foo. 따라서 foo 아래에 생성된 모든 파일과 디렉토리는 그룹 권한을 갖게 됩니다 rw.

/mnt/acl$ setfacl -d --set u::rwx,g::rwx,o::- foo
/mnt/acl$ getfacl foo
# file: foo
# owner: faheem
# group: staff
user::rwx
group::rwx
other::r-x
default:user::rwx
default:group::rwx
default:other::---

foo이제 사용자 faheemjohn.

/mnt/acl$ cd foo
/mnt/acl/foo$ touch bar

# switch to user john for this next command.

/mnt/acl/foo$ touch baz

파일을 나열합니다. 파일 은 그룹 권한으로 faheem소유되고 생성됩니다 .johnrw

/mnt/acl/foo$ ls -la
total 3
drwxrwxr-x+ 2 faheem staff  1024 May  9 01:22 .
drwxr-xr-x  4 faheem faheem 1024 May  9 01:20 ..
-rw-rw----  1 faheem faheem    0 May  9 01:20 bar
-rw-rw----  1 john   john      0 May  9 01:22 baz

관련 정보