Seperti yang ditunjukkan Gilles, setfaclizin default menentukan izin maksimum, yang pada dasarnya menggantikan umask. Jadi file yang baru dibuat akan rwkecuali aplikasi yang membuat file meminta khusus untuk dapat dieksekusi.
$ 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--
Perhatikan perm efektif di atas. (Hanya ada beberapa program yang akan meminta untuk mengatur bit eksekusi pada file yang dibuatnya, misalnya gccuntuk file yang dapat dieksekusi dan cpjika file yang sedang disalin dapat dieksekusi.)
Atau maksud Anda bahwa perintah setfacl pertama berfungsi seperti yang Anda inginkan, tetapi yang kedua tidak? Dengan kata lain, Anda sedang mencari cara untuk memperbaiki izin pada file-file lama, memastikan bahwa direktori dapat dilewati, tanpa memberikan file biasa lainnya menjalankan izin?
Versi saya setfaclmemungkinkan Xpersis seperti yang Anda inginkan, misalnya:
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
Jika versi setfaclAnda tidak mendukung itu, mengapa tidak digunakan find?
menimpa izin, mengaturnya untuk rw untuk file dan rwx untuk dir
$ find . \( -type f -exec setfacl -m g:mygroup:rw '{}' ';' \) \
-o \( -type d -exec setfacl -m g:mygroup:rwx '{}' ';' \)
atur izin ACL mygroup berdasarkan izin grup yang ada
$ find . \( -perm -g+x -exec setfacl -m g:mygroup:rw '{}' ';' \) \
-o \( -exec setfacl -m g:mygroup:rwx '{}' ';' \)
Anda mungkin ingin memeriksa bahwa mask grup memberikan izin yang efektif. Jika tidak, Anda harus menjalankan ini juga:
$ find . -type d -exec chmod g+rwX '{}' ';'