간단히 말해서, 그룹의 모든 사용자가 해당 디렉터리에 있는 모든 파일에 대한 읽기 및 쓰기 실행 권한을 갖는 디렉터리가 있는 파일 서버를 만들려고 합니다. 내 연구에 따르면 ACL은 해당 작업에 적합한 도구이지만 예상대로 작동하지 않는 것 같은 문제에 직면했습니다.
저는 최신 Ubuntu Server LTS 16.04.1을 실행하고 있으며 문제의 드라이브에 대해 ACL이 활성화되어 있는지 확인했습니다.
이 예에서는 2명의 사용자가 있고 alex
두 usera
사용자 모두 그룹에 속합니다 fileserver
. 다음과 같은 테스트 디렉터리를 만들었습니다.
alex@tstsvr:/$ sudo mkdir -p /srv/fstest/test
alex@tstsvr:/$ sudo chown root:fileserver /srv/fstest/test
alex@tstsvr:/$ sudo chmod 770 /srv/fstest/test
해당 디렉터리에서 alex
간단한 테스트 파일을 만듭니다.
alex@tstsvr:/$ cd /srv/fstest/test/
alex@tstsvr:/srv/fstest/test$ echo 123 > test.txt
$ ll
total 12
drwxrwx--- 2 root fileserver 4096 Dec 7 17:09 ./
drwxr-xr-x 4 root root 4096 Dec 7 16:46 ../
-rw-rw-r-- 1 alex alex 4 Dec 7 17:09 test.txt
파일이 그 사람의 소유이고 그의 그룹에 속해 있음을 알 수 있습니다. 다음으로 그는 파일 권한을 설정 770
하고 그룹이 fileserver
파일에 대한 권한을 갖도록 일부 ACL을 설정합니다.rwx
alex@tstsvr:/srv/fstest/test$ chmod 770 test.txt
alex@tstsvr:/srv/fstest/test$ setfacl -m g:fileserver:rwx test.txt
alex@tstsvr:/srv/fstest/test$ ll
total 12
drwxrwx--- 2 root fileserver 4096 Dec 7 17:09 ./
drwxr-xr-x 4 root root 4096 Dec 7 16:46 ../
-rwxrwx---+ 1 alex alex 4 Dec 7 17:09 test.txt*
이제 모든 것이 잘 작동하는 것 같습니다 usera
.
usera@tstsvr:/srv/fstest/test$ getfacl test.txt
# file: test.txt
# owner: alex
# group: alex
user::rwx
group::rw-
group:fileserver:rwx
mask::rwx
other::---
usera@tstsvr:/srv/fstest/test$ cat test.txt
123
그러나 사용자가 alex
권한을 700
...로 변경하면:
alex@tstsvr:/srv/fstest/test$ chmod 700 test.txt
ACL은 이러한 권한을 재정의할 수 없는 것으로 보이며 usera
더 이상 파일을 읽을 수 없습니다.
usera@tstsvr:/srv/fstest/test$ getfacl test.txt
# file: test.txt
# owner: alex
# group: alex
user::rwx
group::rw- #effective:---
group:fileserver:rwx #effective:---
mask::---
other::---
usera@tstsvr:/srv/fstest/test$ cat test.txt
cat: test.txt: Permission denied
내가 이해한 바는 파일에 명명된 그룹 ACL 항목이 있기 때문에 해당 파일 권한을 재정의하지만 그렇지 않은 것 같습니다.
제가 뭔가 잘못하고 있는 건가요, 제가 오해하고 있는 건가요, 아니면 실제로 불가능한 건가요?
답변1
posix 권한은 acl보다 우선합니다. 따라서 acl을 제공한 후 파일을 chmod하면 acl 마스크가 변경됩니다. 다음은 훌륭한 기사입니다. https://serverfault.com/questions/352783/why-does-chmod1-on-the-group-affect-the-acl-mask
답변2
파일에 acl 권한을 적용한 후 처음 11자가 무엇을 의미하는지 설명하겠습니다.
-rwxrwx---+ 1 alex alex 4 Dec 7 17:09 test.txt*
10자 권한 문자열 끝에 있는 +는 파일과 연결된 ACL 설정이 있음을 나타냅니다. 사용자, 그룹 및 기타 "rwx" 플래그를 다음과 같이 해석합니다.
- 사용자: 표준 사용자 파일 설정과 동일한 사용자 ACL 설정을 표시합니다.
- 그룹: 그룹 소유자 설정 대신 현재 ACL 마스크 설정을 표시합니다.
- 다른: 표준 기타 파일 설정과 동일한 추가 ACL 설정을 표시합니다. 접근 금지.
중요한
ACL을 사용하여 파일에 대한 그룹 권한 변경chmod그룹 소유자 권한은 변경되지 않지만 ACL 마스크는 변경됩니다.
소유자 그룹 권한을 변경하려면 다음을 사용하세요.setfacl -mg::perms 파일
다음 명령을 사용하여 그룹 소유자 권한을 변경할 수 있습니다.
chmod 700 test.txt
- 7(rwx)파일 소유자 권한 변경
- 0 (---) ACL 마스크를 변경합니다.
- 0 (---) 기타 권한 변경
아래 명령에 따라 위 명령을 변경하십시오.
setfacl -m g::--- text.txt
ACL 권한을 신청한 후setfacl -mg::perms 파일소유자 그룹 권한을 변경하는 유일한 방법입니다.
명명된 사용자, 명명된 그룹 및 소유자 그룹권한 컨트롤러ACL 마스크
마스크 권한을 0(---)으로 변경했기 때문에 name-group(fileserver)의 유효 권한은 0(---)입니다.