Für diese Art der Granularität sollten Sie ACLs verwenden. Mit ALCs können Sie mehreren Benutzern oder Gruppen unterschiedliche Berechtigungen zuweisen. Um das zu erreichen, was Sie fragen, führen Sie die folgenden Befehle aus (vorausgesetzt, Ihr Verzeichnis heißt dir):
setfacl -m u:user1:rwx dir setfacl -m u:user2:rwx dir setfacl -m u:user3:- dir setfacl -m u:user4:- dir setfacl -m u:user5:rx dir setfacl -m u:user6:rx dir
Dadurch erhalten Sie vollen Zugriff auf Benutzer 1 und 2, keinen Zugriff auf Benutzer 3 und 4 und Lese- / Ausführungsberechtigungen für Benutzer 5 und 6. Wenn Sie ein ls -ld
Verzeichnis ausführen, werden Sie feststellen, dass es jetzt +
an die Berechtigungsbits angehängt ist.
$ ls -ld dir drwxrwxr-x+ 2 user0 users 40 Dec 7 11:42 dir
Das +
bedeutet, dass ihm eine oder mehrere ACLs zugeordnet sind. Sie können die ACLs mit dem getfacl
Befehl anzeigen :
$ getfacl dir # file: dir # owner: user0 # group: users user::rwx user:user1:rwx user:user2:rwx user:user3:--- user:user4:--- user:user5:r-x user:user6:r-x group::r-x mask::rwx other::r-x
Beachtenswert ist auch, dass der ls
Befehl zu zeigen scheint, dass das Verzeichnis für Gruppen schreibbar ist. Der getfacl
Befehl zeigt jedoch, dass dies nicht der Fall ist. Die ACL ist hier richtig, dh wenn ein Benutzer in der users
Gruppe, der jedoch nicht anderweitig in der ACL benannt ist oder der Eigentümer der Datei versucht, eine Datei im Verzeichnis zu erstellen, schlägt die ACL fehl.