파일과 디렉터리에 ACL을 다시 적용하는 스크립트가 있습니다. 그러나 그룹에 대한 쓰기 권한을 여는 부작용이 있는데, 이는 설명할 수 없습니다. 각 문 전후의 권한을 확인하여 스크립트의 특정 문 하나로 원인을 좁혔습니다.
root@kompir:/tmp/perms# nl /apply-sec
1 #!/bin/bash
2 targetbase=$1
3 [ -z "$targetbase" ] && exit
4 [ ! -d $targetbase ] && exit
5 #set -x
6 check_base() {
7 # Debugging function - call it to view the current ACL and mode bits
8 getfacl $targetbase
9 ls -ld $targetbase
10 echo ---------------------------------------------
11 }
12 # Remove any ACLs
13 setfacl -R -b $targetbase
14 # Set basic permissions
15 chown -R owner $targetbase
16 find $targetbase -type d -exec chmod 2755 {} \;
17 find $targetbase -type f -exec chmod 644 {} \;
18 # Set Default Mask
19 setfacl -d -m m:rwx $targetbase
20 # User1 with Default
21 check_base
22 setfacl -m u:user1:rwx $targetbase
23 check_base
24 setfacl -d -m u:user1:rwx $targetbase
25 # User2 with Default
26 setfacl -m u:user2:r-x $targetbase
27 setfacl -d -m u:user2:r-x $targetbase
28 # Apply recursively
29 getfacl $targetbase | setfacl -R -M- $targetbase
22행의 명령문은 그룹 쓰기 모드 비트를 켭니다(16행에서는 비트가 꺼졌습니다).
테스트 목적으로 생성된 일부 샘플 디렉터리를 사용하여 스크립트의 출력이 아래에 표시됩니다.
root@kompir:/tmp/perms# /apply-sec perms1/
# file: perms1/
# owner: owner
# group: root
# flags: -s-
user::rwx
group::r-x
other::r-x
default:user::rwx
default:group::r-x
default:mask::rwx
default:other::r-x
drwxr-sr-x+ 4 owner root 4096 Jun 9 09:20 perms1/
---------------------------------------------
# file: perms1/
# owner: owner
# group: root
# flags: -s-
user::rwx
user:user1:rwx
group::r-x
mask::rwx
other::r-x
default:user::rwx
default:group::r-x
default:mask::rwx
default:other::r-x
drwxrwsr-x+ 4 owner root 4096 Jun 9 09:20 perms1/
---------------------------------------------
디버그 함수가 표시 모드로 두 번째 호출되면 그룹 쓰기 권한이 다시 켜집니다.
왜 이런 일이 발생하며 이는 예상되는 동작입니까? 피할 수 있습니까?
답변1
디버그 함수가 표시 모드로 두 번째 호출되면 그룹 쓰기 권한이 다시 켜집니다.
이는 사실이 아닙니다. 얻는 결과를 살펴보십시오.
# file: perms1/
[...]
group::r-x
출력에 표시되는 것은 ls
더 이상 그룹 권한이 아니라 지정된 사용자 및 그룹 ACL 항목이 부여할 수 있는 권한을 제한하는 ACL 마스크입니다.
보다acl(5)
매뉴얼 페이지. 이전 답변에 더 긴 설명이 있습니다.
touch/mkdir이 기본 ACL을 무시하는 것 같습니다.