เป็นจุด Gilles ออกสิทธิ์เริ่มต้นระบุสิทธิ์สูงสุดพื้นแทนsetfacl
umask
ดังนั้นไฟล์ที่สร้างขึ้นใหม่จะเป็นrw
ถ้าแอปพลิเคชันที่สร้างไฟล์นั้นถามเป็นพิเศษว่าไฟล์นั้นจะสามารถเรียกใช้งานได้
$ mkdir test
$ touch test/oldfile
$ getfacl test/oldfile
# file: test/oldfile
# owner: myuser
# group: myuser
user::rw-
group::r--
other::r--
$ setfacl -m d:g:mygroup:rwx test
$ touch test/newfile
$ getfacl test/newfile
# file: test/newfile
# owner: myuser
# group: myuser
user::rw-
group::r-x #effective:r--
group:mygroup:rwx #effective:rw-
mask::rw-
other::r--
สังเกต perms ที่มีประสิทธิภาพข้างต้น (มีเพียงไม่กี่โปรแกรมที่จะขอให้ตั้งค่าบิตเรียกใช้งานบนไฟล์ที่สร้างเช่นgcc
สำหรับไฟล์ที่เรียกใช้งานได้และcp
หากไฟล์ที่ถูกคัดลอกนั้นสามารถเรียกใช้งานได้)
หรือคุณหมายถึงว่าคำสั่ง setfacl แรกทำงานตามที่คุณต้องการ แต่คำสั่งที่สองไม่ใช่ กล่าวอีกนัยหนึ่งคุณต้องการแก้ไขการอนุญาตในไฟล์เก่าตรวจสอบให้แน่ใจว่าไดเรคทอรีสามารถสำรวจได้โดยไม่ต้องให้สิทธิ์การใช้งานไฟล์ปกติอื่น ๆ
เวอร์ชันของฉันsetfacl
อนุญาตX
เหมือนที่คุณต้องการเช่น:
setfacl g:mygroup:rwX
$ setfacl --version
setfacl 2.2.49
$ rm -r test
$ mkdir test
$ mkdir test/olddir
$ touch test/oldfile
$ find test -ls
107513 4 drwxr-xr-x 3 myuser myuser 4096 Dec 22 01:56 test
107539 0 -rw-r--r-- 1 myuser myuser 0 Dec 22 01:56 test/oldfile
107529 4 drwxr-xr-x 2 myuser myuser 4096 Dec 22 01:56 test/olddir
$ setfacl -Rm g:somegroup:rwx test
$ find test -ls
107513 4 drwxrwxr-x 3 myuser myuser 4096 Dec 22 01:56 test
107539 0 -rw-rwxr-- 1 myuser myuser 0 Dec 22 01:56 test/oldfile
107529 4 drwxrwxr-x 2 myuser myuser 4096 Dec 22 01:56 test/olddir
$ rm -r test
$ mkdir test
$ mkdir test/olddir
$ touch test/oldfile
$ setfacl -Rm g:somegroup:rwX test
$ find test -ls
107513 4 drwxrwxr-x 3 myuser myuser 4096 Dec 22 01:56 test
107539 0 -rw-rw-r-- 1 myuser myuser 0 Dec 22 01:56 test/oldfile
107529 4 drwxrwxr-x 2 myuser myuser 4096 Dec 22 01:56 test/olddir
หากเวอร์ชันของคุณsetfacl
ไม่รองรับนั้นทำไมไม่ใช้find
?
เขียนทับสิทธิ์ตั้งค่าเป็น rw สำหรับไฟล์และ rwx สำหรับ dirs
$ find . \( -type f -exec setfacl -m g:mygroup:rw '{}' ';' \) \
-o \( -type d -exec setfacl -m g:mygroup:rwx '{}' ';' \)
ตั้งค่าสิทธิ์ mygroup ACL ตามการอนุญาตกลุ่มที่มีอยู่
$ find . \( -perm -g+x -exec setfacl -m g:mygroup:rw '{}' ';' \) \
-o \( -exec setfacl -m g:mygroup:rwx '{}' ';' \)
คุณอาจต้องการตรวจสอบว่ารูปแบบกลุ่มให้สิทธิ์ที่มีประสิทธิภาพ ถ้าไม่คุณจะต้องเปิดใช้งานด้วย:
$ find . -type d -exec chmod g+rwX '{}' ';'