Wie Gilles betont, setfaclgeben die Standardberechtigungen die maximalen Berechtigungen an und ersetzen im Wesentlichen die umask. Neu erstellte Dateien sind also nur dann rwverfügbar , wenn die Anwendung, die die Datei erstellt hat, speziell darum gebeten hat, dass sie ausführbar ist.
$ 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--
Beachten Sie die oben angegebenen effektiven Dauerwellen. (Es gibt nur wenige Programme, die nach dem Setzen des Ausführungsbits für die von ihnen erstellten Dateien fragen, z. B. gccfür ausführbare Dateien und cpwenn die zu kopierende Datei ausführbar war.)
Oder haben Sie gemeint, dass der erste Befehl setfacl so funktioniert hat, wie Sie es wollten, der zweite jedoch nicht? Mit anderen Worten, Sie möchten Berechtigungen für die alten Dateien korrigieren und sicherstellen, dass Verzeichnisse durchsuchbar sind, ohne anderen regulären Dateien Ausführungsberechtigungen zu erteilen.
Meine Version von setfaclerlaubt Xgenau das, was Sie wollen, zB:
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
Wenn Ihre Version von setfacldas nicht unterstützt, warum nicht find?
Überschreibe Berechtigungen und setze sie auf rw für Dateien und rwx für Verzeichnisse
$ find . \( -type f -exec setfacl -m g:mygroup:rw '{}' ';' \) \
-o \( -type d -exec setfacl -m g:mygroup:rwx '{}' ';' \)
Festlegen von mygroup-ACL-Berechtigungen basierend auf vorhandenen Gruppenberechtigungen
$ find . \( -perm -g+x -exec setfacl -m g:mygroup:rw '{}' ';' \) \
-o \( -exec setfacl -m g:mygroup:rwx '{}' ';' \)
Sie sollten wahrscheinlich überprüfen, ob die Gruppenmaske wirksame Berechtigungen bietet. Wenn nicht, müssen Sie dies auch ausführen:
$ find . -type d -exec chmod g+rwX '{}' ';'