ฉันพยายามที่จะเข้าใจพฤติกรรม Unix นี้ (ซึ่งฉันกำลังทดสอบกับ Ubuntu 11.10):
$ touch foo
$ setfacl -m u:nobody:rwx foo
$ getfacl foo
# file: foo
# owner: michael
# group: michael
user::rw-
user:nobody:rwx
group::rw-
mask::rwx
other::r--
$ chmod g-rw foo
$ getfacl foo
# file: foo
# owner: michael
# group: michael
user::rw-
user:nobody:rwx #effective:--x
group::rw- #effective:---
mask::--x
other::r--
ขอให้สังเกตว่าคำสั่ง chmod (1) ได้อัปเดตมาสก์ ACL แล้ว ทำไมสิ่งนี้ถึงเกิดขึ้น
SunOS manpageมีดังต่อไปนี้จะพูดว่า:
หากคุณใช้คำสั่ง chmod (1) เพื่อเปลี่ยนสิทธิ์การเป็นเจ้าของกลุ่มไฟล์ในไฟล์ที่มีรายการ ACL ทั้งสิทธิ์การเป็นเจ้าของกลุ่มไฟล์และหน้ากาก ACL จะเปลี่ยนเป็นสิทธิ์ใหม่ โปรดทราบว่าการอนุญาตการมาสก์ ACL ใหม่อาจเปลี่ยนการอนุญาตที่มีประสิทธิภาพสำหรับผู้ใช้และกลุ่มเพิ่มเติมที่มีรายการ ACL ในไฟล์
ฉันถามเพราะมันจะสะดวกสำหรับฉันถ้า chmod (1) ไม่มีพฤติกรรมนี้ ฉันหวังว่าด้วยการเข้าใจว่าทำไมมันถึงทำในสิ่งที่มันทำฉันก็สามารถออกแบบวิธีตั้งค่าการอนุญาตระบบไฟล์ได้ดีขึ้น