Wie Gilles betont, setfacl
geben die Standardberechtigungen die maximalen Berechtigungen an und ersetzen im Wesentlichen die umask
. Neu erstellte Dateien sind also nur dann rw
verfü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. gcc
für ausführbare Dateien und cp
wenn 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 setfacl
erlaubt X
genau 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 setfacl
das 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 '{}' ';'