FreeBSD는 ACL을 존중하지 않습니다

FreeBSD는 ACL을 존중하지 않습니다

FreeBSD 13.0에서 폴더에 대한 기본 그룹 권한을 설정하려고 합니다.

$mkdir test
$setfacl -d -m u::rwx,g::rwx,o::rx,mask::rwx test
$getfacl -d test
# file: test
# owner: john
# group: wheel
user::rwx
group::rwx
mask::rwx
other::r-x
$cd test
$touch file

$ls -l file
-rw-r--r--+ 1 john  wheel     0B Jul  9 19:32 file

$getfacl file
# file: file
# owner: john
# group: wheel
user::rw-
group::rwx              # effective: r--
mask::r--
other::r--

보시다시피 그룹 권한이 올바르게 상속되지 않습니다. 사용자와 그룹의 x 플래그는 신경 쓰지 않습니다. 이는 보안 메커니즘입니다. 그러나 그룹에는 쓰기 권한이 있어야 하는데 그렇지 않습니다. "mkdir" 명령으로 생성된 폴더에서도 동일한 동작이 관찰될 수 있습니다.

ArchLinux에서는 동일한 명령 세트가 정상적으로 실행됩니다. FreeBSD에서는 umask가 어떤 방식으로든 인계받으며 일반적으로 acl에 의해 재정의되어야 합니다. umask를 002로 변경하면 원하는 결과를 얻습니다.

FreeBSD에서는 UFS2 파일 시스템을 사용하고 ArchLinux에서는 ext4를 사용합니다.

이것에 대한 생각이 있나요?

답변1

보시다시피 그룹 권한이 올바르게 상속되지 않습니다.

내가 볼 때 그들은 절대적으로 그렇다.적절한 상속. 을 지정했고 group:rwx, 출력은 다음 getfacl과 같습니다.얻다 group:rwx.

FreeBSD에서는 umask가 어떤 방식으로든 인계받으며 일반적으로 acl에 의해 재정의되어야 합니다.

잘못된. FreeBSD는 옳은 일을 했습니다. touch권한이 있는 파일이 생성되고 rw-rw-rw-현재 umask설정이 ( 022아마도) rw-r--r--다음과 같이 수정됩니다.정확히 그래야만 해.

첫 번째 부분이 ACE rw-가 되고 user, 중간 부분이 ACE r--가 되고 mask, 마지막 부분이 ACE r--가 됩니다 .other이것이 TRUSIX 액세스 제어가 레거시 권한 비트를 설정하는 것과 상호 운용되는 방식입니다.. 사용자 권한은 소유자 사용자에 대한 액세스 제어입니다.그룹 권한은 마스크된 액세스 제어입니다..

touch수정을 통해 귀하의 명령 umask은 소유자 사용자만 쓸 수 있고 다른 사용자(다른 사용자, 소유자 그룹, 다른 그룹 및 전 세계)는 읽기만 할 수 있는 파일을 생성하도록 지시합니다. 이는 귀하가 얻은 ACL이 달성하는 것입니다.

상속 가능한 ACE를 추가하면 소유자 사용자만 쓸 수 있는 파일에 명령을 내리는 것과 똑같은 방식으로 이를 효과적으로 차단하는 u:nobody:rwxACL을 얻게 됩니다 .nobody:r--

관련 정보