특정 폴더의 모든 사용자에 대해 umask 설정을 재정의하는 방법은 무엇입니까?

특정 폴더의 모든 사용자에 대해 umask 설정을 재정의하는 방법은 무엇입니까?

RHEL6을 실행 중입니다. /etc/bashrc에 "umask 077"이 포함되도록 요청했지만 변경이 허용되지 않습니다. 그룹 공동 작업을 위해 지정된 폴더가 있고 같은 그룹의 모든 사람이 폴더를 읽고 쓸 수 있기를 바랍니다. 따라서 사용자는 수동으로 또는 로컬 .bashrc 파일에서 "umask 002"를 설정하거나 chmod를 기억해야 합니다. 그들은 종종 잊어버리고, 파일 소유자가 부재하기 때문에 관리자에게 권한을 "복구"하라는 요청을 받습니다.

폴더를 "umask 002"로 강제하는 방법이 있습니까? setfacl을 사용해야 한다는 내용을 읽었지만 umask가 이를 무시할 것이라고 생각합니다.

답변1

바라보다특정 디렉터리에 생성된 파일에 그룹 및 권한을 강제하는 방법은 무엇입니까?

제가 테스트한 것은 /var/test 디렉토리를 생성하는 것이었습니다. 그룹을 tgroup01로 설정했습니다. /var/test 아래에 생성된 모든 항목이 tgroup01 그룹으로 설정되도록 했습니다. 그런 다음 /var/test 아래의 모든 항목에 대한 기본 그룹 권한이 rwx인지 확인했습니다.

sudo mkdir /var/test
sudo chgrp tgroup01 /var/test
sudo chmod 2775 /var/test
sudo setfacl -m "default:group::rwx"

그런 다음 foo 디렉토리를 만들거나 파일 등을 터치하면 올바른 권한이 있습니다.

ls -al /var/test

drwxrwsr-x+  3 root   tgroup01  .
drwxr-xr-x   5 root   root      ..
-rw-rw-r--   1 userA  tgroup01  blah
drwxrwxr-x+  2 userA  tgroup01  foo

답변2

setgid 비트는 도움이 되지 않습니다. 이는 소유권에만 영향을 미치며 소유자가 파일로 수행할 수 있는 작업에는 영향을 미치지 않습니다.

이는 공유 저장 영역이 다른 파일 시스템에 마운트된 경우 작동할 수 있습니다. 파일을 공유할 수 있도록 관리자가 명시적으로 올바른 umask 세트를 사용하여 설치하도록 해야 합니다. 또는 파일이 내부 용도로만 삼바 공유에 의해 마운트됩니다. 이는 약간 과장된 것이지만 삼바는 운영 체제에서 제공하는 것 이외의 특정 그룹 및 권한 모델을 쉽게 허용할 수 있습니다.

간단히 말해서, 우리 중 일부는 "ITS"의 "S"가 서비스를 의미한다고 생각합니다. 077 umask 요구 사항이 있는 경우 파일을 공유하는 효율적인 방법을 찾아야 합니다.

(그리고 setgid 비트는 작동하지 않습니다)

ivan@darkstar:~$ umask
0002
ivan@darkstar:~$ 
ivan@darkstar:~$ umask 077
ivan@darkstar:~$ umask
0077
ivan@darkstar:~$ mkdir te
ivan@darkstar:~$ ls -ld te
drwx------ 2 ivan ivan 4096 Sep  7 18:53 te
ivan@darkstar:~$ umask 2
ivan@darkstar:~$ umask
0002
ivan@darkstar:~$ groups
ivan adm cdrom sudo dip plugdev lpadmin sambashare kvm webdev
ivan@darkstar:~$ sudo chown .webdev te
ivan@darkstar:~$ sudo chmod g+w te
ivan@darkstar:~$ ls -ld te
drwx-w---- 2 ivan webdev 4096 Sep  7 18:53 te
ivan@darkstar:~$ chmod g+rx te
ivan@darkstar:~$ sudo chmod g+s te
ivan@darkstar:~$ ls -ld te
drwxrws--- 2 ivan webdev 4096 Sep  7 18:53 te
ivan@darkstar:~$ cd te
ivan@darkstar:~/te$ umask 077
ivan@darkstar:~/te$ umask
0077
ivan@darkstar:~/te$ touch test
ivan@darkstar:~/te$ ls -l
total 0
-rw------- 1 ivan ivan 0 Sep  7 18:54 test
ivan@darkstar:~/te$ 

답변3

특별한 라이센스를 사용하면 이를 달성할 수 있습니다."GID 비트 설정".

setgid 비트는 파일과 디렉터리 모두에서 작동합니다. 첫 번째 경우, setgid 비트가 설정된 파일은 파일을 시작한 그룹의 권한으로 실행되지 않고 파일을 소유한 그룹의 권한으로 실행됩니다.

대조적으로, 디렉토리에서 사용될 때 setgid 비트는 해당 디렉토리 내에 생성된 파일 그룹이 파일을 생성한 사용자의 그룹이 아니라 상위 디렉토리 자체의 그룹이 되도록 표준 동작을 변경합니다. 이는 파일 공유를 단순화하는 데 자주 사용됩니다(그룹에 속한 모든 사용자가 파일을 수정할 수 있음).

설정하고 싶다면설정디렉터리에서 비트 작업을 수행하려면 다음 명령을 사용합니다.

$ chmod 2775 test_dir

위 명령을 사용하면 디렉토리 소유자와 디렉토리가 속한 그룹의 사용자에게 디렉토리에 대한 모든 권한을 부여하고 다른 모든 사용자에게는 읽기 및 실행 권한을 부여합니다.

아래 설명과 같이 다른 방법으로 설정할 수 있습니다.

$ chmod g+s test_dir

우리는 이름으로 여러 사용자를 만들었습니다사용자 1,사용자 2,사용자 3:

$ useradd user1
$ useradd user2
$ useradd user3

나는 또한라는 그룹을 만들었습니다.그룹:

$ groupadd group

다음에 추가그룹생성 사용자의 보조 그룹:

$ usermod -a -G group user1
$ id user1
uid=1000(user1) gid=1000(user1) groups=1000(user1),1003(group)

$ usermod -a -G group user2
$ id user2
uid=1001(user2) gid=1001(user2) groups=1001(user2),1003(group)

$ usermod -a -G group user3
$ id user3
uid=1002(user3) gid=1002(user3) groups=1002(user3),1003(group)

만들어진테스트 디렉토리그리고 추가됨GID 비트 설정허용하다:

$ mkdir test_dir
$ chmod 2775 test_dir
$ ls -al 
drwxrwsr-x   5 user group  4096 Sep  7 17:10 test_dir

생성된 사용자를 사용하여 test_dir에 파일과 디렉터리를 만듭니다.

$ cd test_dir

$ su user1
$ mkdir user1_dir
$ touch user1_file

$ su user2
$ mkdir user2_dir
$ touch user2_file

$ su user3
$ mkdir user3_dir
$ touch user3_file

이것은테스트 디렉토리디렉토리 목록:

$ ls -al
total 44
drwxrwsr-x 5 user  group 4096 Sep  7 17:10 .
drwxr-xr-x 1 root  root  4096 Sep  7 17:35 ..
drwxrwsr-x 2 user1 group 4096 Sep  7 17:11 user1_dir
-rw-rw-r-- 1 user1 group    0 Sep  7 17:10 user1_file
drwxrwsr-x 2 user2 group 4096 Sep  7 17:09 user2_dir
-rw-rw-r-- 1 user2 group    0 Sep  7 17:09 user2_file
drwxrwsr-x 2 user3 group 4096 Sep  7 17:09 user3_dir
-rw-rw-r-- 1 user3 group    0 Sep  7 17:09 user3_file

이 솔루션이 귀하에게 도움이 되기를 바랍니다.

관련 정보