Ich möchte benutzensetfacldir
um Berechtigungen für die Benutzergruppe festzulegen . Ich mache so etwas:
mkdir /Employee
chgrp employeers /Employee
setfacl -m d:g::rwx /Employee
Und jetzt, wenn ich versuche, eine Datei zu erstellen (von Benutzern, die Mitglied dieser Gruppe sind), erhalte ich die Fehlermeldung „Keine Berechtigung“.
root@debian:~# ls -la /Employee
all 8
drwxr-xr-x+ 2 root employeers 4096 maj 21 14:50 .
drwxr-xr-x 23 root root 4096 maj 21 14:50 ..
Was mache ich falsch?
Antwort1
d
ist eine Abkürzung für default
. Die Standardberechtigungen und die tatsächlichen Berechtigungen sind unabhängig. Führen Sie den Befehl setfacl ein zweites Mal ohne aus d:
, dann sollten die Berechtigungen wie gewünscht funktionieren. Ich gehe davon aus, dass Sie die Wirkung beider Befehle wünschen.
Die Ausgabe von getfacl
kann Ihnen diese Schlussfolgerung nahelegen, indem
- Anzeige
default:
erweitert - Es werden die ursprünglichen Zugriffssteuerungseinträge angezeigt, die nicht „Standard“ enthalten. Dies weist darauf hin, dass an dem von Ihnen vorgenommenen Eintrag etwas anders ist.
Im Gegenzug zeigt das +
in der Ausgabe von ls -l
, dass es ACEs gibt, die Zugriffe erlauben, die vom Basismodus sonst nicht erwartet würden (es gibt keine Möglichkeit, wie Standard-POSIX-ACEs einen Zugriff verweigern können, der vom Basismodus erlaubt ist, wie Sie sehen)[1]. Nach dem zweiten setfacl-Befehl werden Sie feststellen, dass der Basismodus in wechselt rwxrwxr-x
. Das liegt daran, dass employeers
die primäre Gruppe der Datei ist und setfacl die Erstellung eines doppelten Eintrags vermeidet.
[1] Windows- und NFSv4-ACLs erlauben Deny-Einträge. Viele halten dies für eine Komplexitätsfalle, einschließlich der Manpage für nfs4_acl. Natürlich bedeutet dies, dass die ACL-Reihenfolge von Bedeutung ist. Anscheinend ändern Windows-GUIs sie in eine „bevorzugte“ Reihenfolge mit expliziten Deny-Einträgen zuerst und geerbten Einträgen am Ende.