Linux 확장 ACL 및 '일반' 권한 간섭의 이상한 점

Linux 확장 ACL 및 '일반' 권한 간섭의 이상한 점

일부 파일이 읽기 전용이고 소유자만 읽을 수 있는지 확인하는 레거시 코드가 있습니다. 즉, 권한이 0400으로 설정되어 있습니다. 또한 시스템의 다른 사용자에게 이 파일에 대한 읽기 전용 액세스 권한을 부여해야 합니다. 확장 ACL을 설정하려고 하는데 이로 인해 '일반' 권한 비트도 이상한 방식으로 변경됩니다.

$ ls -l hostkey.pem 
-r-------- 1 root root 0 Jun  7 23:34 hostkey.pem
$ setfacl -m user:apache:r hostkey.pem 
$ getfacl hostkey.pem 
# file: hostkey.pem
# owner: root
# group: root
user::r--
user:apache:r--
group::---
mask::r--
other::---

$ ls -l hostkey.pem 
-r--r-----+ 1 root root 0 Jun  7 23:34 hostkey.pem

그 후 레거시 코드는 파일이 그룹 읽기 가능하다고 불평하기 시작합니다(실제로는 그렇지 않습니다!).

다른 사용자도 읽기 전용 액세스 권한을 갖고 파일에는 0400 '일반' 권한만 있는 것처럼 보이도록 확장 ACL을 설정할 수 있습니까?

답변1

우리는 특히 Samba를 통한 Linux ACL 실험에서 이와 같은 현상을 목격했습니다. 그러나 대부분의 경우 일반 권한/파일 모드 비트가 이상한 방식으로 변경되더라도 시스템은 여전히 ​​의도한 대로 전반적으로 작동합니다.

파일을 생성할 때(아마도 Samba를 통해) 데이터가 파일에 기록될 때까지 ACL 권한이 모드 비트에 제대로 반영되지 않았다는 내용을 어디선가 읽은 기억이 납니다(죄송합니다). 이는 터치 등을 사용하여 생성된 파일에 영향을 미칩니다.

고려해야 할 또 다른 사항은 기본 ACL을 설정할지 여부입니다.

ACL로 보호되는 파일이 포함된 새 디렉터리를 만들 때 이와 같은 것을 사용합니다. setfacl에 파이프된 getfacl을 사용하는 마지막 명령은 현재 설정된 ACL을 복사하여 이 디렉터리에 생성된 새 파일에 대한 기본 ACL로 사용됩니다.

chown --recursive $username:$userrole /home/data/private/$datadir
chmod --recursive u=rwx,g=,o= /home/data/private/$datadir

# remove previous ACLs
setfacl --recursive --remove-all /home/data/private/$datadir

# User/group access for owner, group leader and web server
setfacl --recursive -m u:$username:rwx /home/data/private/$datadir
setfacl --recursive -m g:RGLeader:rx /home/data/private/$datadir
setfacl --recursive -m u:www-data:rwx /home/data/private/$datadir

# Copy access modes to default access modes
getfacl --access /home/data/private/$datadir | setfacl --recursive -d -M- /home/data/private/$datadir

관련 정보