ฉันพยายามเข้าใจความแตกต่างของพฤติกรรมระหว่าง FreeBSD ACL และ Linux ACL โดยเฉพาะอย่างยิ่งกลไกการสืบทอดสำหรับ ACL เริ่มต้น
ฉันใช้สิ่งต่อไปนี้กับทั้ง Debian 9.6 และ FreeBSD 12:
$ cat test_acl.sh
#!/bin/sh
set -xe
mkdir storage
setfacl -d -m u::rwx,g::rwx,o::-,m::rwx storage
touch outside
cd storage
touch inside
cd ..
ls -ld outside storage storage/inside
getfacl -d storage
getfacl storage
getfacl outside
getfacl storage/inside
umask
ฉันได้รับผลลัพธ์ต่อไปนี้จาก Debian 9.6:
$ ./test_acl.sh
+ mkdir storage
+ setfacl -d -m u::rwx,g::rwx,o::-,m::rwx storage
+ touch outside
+ cd storage
+ touch inside
+ cd ..
+ ls -ld outside storage storage/inside
-rw-r--r-- 1 aaa aaa 0 Dec 28 11:16 outside
drwxr-xr-x+ 2 aaa aaa 4096 Dec 28 11:16 storage
-rw-rw----+ 1 aaa aaa 0 Dec 28 11:16 storage/inside
+ getfacl -d storage
# file: storage
# owner: aaa
# group: aaa
user::rwx
group::rwx
mask::rwx
other::---
+ getfacl storage
# file: storage
# owner: aaa
# group: aaa
user::rwx
group::r-x
other::r-x
default:user::rwx
default:group::rwx
default:mask::rwx
default:other::---
+ getfacl outside
# file: outside
# owner: aaa
# group: aaa
user::rw-
group::r--
other::r--
+ getfacl storage/inside
# file: storage/inside
# owner: aaa
# group: aaa
user::rw-
group::rwx #effective:rw-
mask::rw-
other::---
+ umask
0022
ขอให้สังเกตว่าไฟล์outsideและinsideมีสิทธิ์ที่แตกต่างกัน โดยเฉพาะอย่างยิ่งoutsideไฟล์นั้นมี-rw-r--r--ซึ่งเป็นค่าเริ่มต้นสำหรับผู้ใช้นี้และinsideไฟล์นั้นมีความ-rw-rw----เคารพ ACLs เริ่มต้นที่ฉันกำหนดstorageไดเรกทอรี
ผลลัพธ์ของสคริปต์เดียวกันบน FreeBSD 12:
$ ./test_acl.sh
+ mkdir storage
+ setfacl -d -m u::rwx,g::rwx,o::-,m::rwx storage
+ touch outside
+ cd storage
+ touch inside
+ cd ..
+ ls -ld outside storage storage/inside
-rw-r--r-- 1 aaa aaa 0 Dec 28 03:16 outside
drwxr-xr-x 2 aaa aaa 512 Dec 28 03:16 storage
-rw-r-----+ 1 aaa aaa 0 Dec 28 03:16 storage/inside
+ getfacl -d storage
# file: storage
# owner: aaa
# group: aaa
user::rwx
group::rwx
mask::rwx
other::---
+ getfacl storage
# file: storage
# owner: aaa
# group: aaa
user::rwx
group::r-x
other::r-x
+ getfacl outside
# file: outside
# owner: aaa
# group: aaa
user::rw-
group::r--
other::r--
+ getfacl storage/inside
# file: storage/inside
# owner: aaa
# group: aaa
user::rw-
group::rwx # effective: r--
mask::r--
other::---
+ umask
0022
(หมายเหตุของ Debian getfaclจะแสดง ACLs เริ่มต้นด้วยแม้ว่าจะไม่ได้ใช้ใน-dกรณีที่ FreeBSD ไม่ได้ แต่ฉันไม่คิดว่า ACL จริงstorageนั้นแตกต่างกัน)
ที่นี่outsideและinsideไฟล์ยังมีสิทธิ์ที่แตกต่างกัน แต่insideไฟล์ไม่ได้รับอนุญาตเป็นกลุ่มเขียนว่ารุ่น Debian ไม่อาจจะเป็นเพราะหน้ากากใน Debian ไว้wขณะที่หน้ากากใน FreeBSD wแพ้
ทำไม FreeBSD ถึงสูญเสียwหน้ากาก แต่เดเบียนยังคงใช้มันอยู่?
g+s)
getfaclข้อมูล
storage, ls ควรจะแสดง+ในทำนองเดียวกันผมจะคาดหวังgetfaclการส่งออกจะคล้ายกับสิ่งที่คุณมีในระบบ Debian ไม่setfaclรหัสทางออกที่ประสบความสำเร็จกลับมา?
getfacl storageแสดงในทั้งสองระบบ?