ฉันพยายามเข้าใจความแตกต่างของพฤติกรรมระหว่าง 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
แสดงในทั้งสองระบบ?