Linux-Berechtigungen: Benutzer, Gruppen, Andere, weiße Liste oder schwarze Liste? Und helfen Sie dabei, Verzeichnisse mit vollständigen, teilweisen und ohne Berechtigungen zu teilen

646
Gabriel Staples

Update: Für meine allgemeinen Zwecke ist das, was ich hier herausgefunden habe, gut genug: UPDATE: https://raspberrypi.stackexchange.com/questions/13401/locking-down-raspbian-to-only-allow-limited-features/58778# 58778


Es scheint mir so, als würden Linux-Berechtigungen als Whitelist (zwingend einem einzelnen angegebenen Benutzer oder einer bestimmten bestimmten Gruppe) und nicht als schwarze Liste (zwangsweise einem einzelnen angegebenen Benutzer oder einer bestimmten bestimmten Gruppe etwas abgelehnt) funktionieren. . Ist das richtig? Wenn ja, wie kann ich jemanden auf die schwarze Liste setzen, wenn er in einem bestimmten Verzeichnis oder in einer Gruppe von Dateien lesen, schreiben oder ausführen kann?

Beispiel: ls -lAnzeigen einer Berechtigung für ein Verzeichnis als drwxr-xr-xbedeutet, dass es sich um ein Verzeichnis handelt. Benutzer verfügen über Lese-, Schreib- und Ausführungsberechtigungen (Rwx), Gruppen haben RX-Berechtigungen und Andere verfügen über RX-Berechtigungen. Nehmen wir an, der Benutzer ist "Benutzer0" und die Gruppe ist "Benutzer0".

Wie erlaube ich explizit "user1" und "user2" die Berechtigung, alle Berechtigungen für dieses "user0" -Verzeichnis zu haben, "user3" und "user4" keine Berechtigungen erhalten und "user5" und "user6" Teilberechtigungen erhalten?

Es scheint mir, dass ich Benutzer3 und Benutzer4, White-Listen-Benutzer1 und Benutzer2 und teilweise White-Listen- oder teilweise Black-Listen-Benutzer5 und Benutzer6 auf die schwarze Liste setzen muss.

Da (meiner Meinung nach) Linux-Berechtigungen nur Whitelist sind, wie kann dies am besten erreicht werden?

Beachten Sie, dass ein Teil meiner Verwirrung in den Fakten liegt:

  1. Ein Verzeichnis oder eine Datei kann jeweils nur einem Benutzer oder einer Gruppe angehören (anstatt pro Gruppe Berechtigungen für den Zugriff auf ein bestimmtes Verzeichnis oder eine bestimmte Datei zu erteilen).
  2. Ein Benutzer kann mehreren Gruppen angehören

Ich denke, ich brauche nur ein paar gute Beispiele für dieses Zeug.


Eine Teillösung, die das Problem, das ich habe, demonstriert, ist folgende:

Nehmen wir an, das user0-Verzeichnis, für das ich diese Berechtigungen festlegen möchte, lautet "/ home / user0".

Legen Sie zunächst das Verzeichnis user "user0" und die Gruppe "user0" fest (dies ist bereits standardmäßig der Fall sudo adduser user0). Setzen Sie als Nächstes die Berechtigungen auf "drwxrwx ---" (Benutzer und Gruppe sowohl rwx als auch Others)

Erlauben Sie user1 und user2 alle Berechtigungen für das Verzeichnis, indem Sie sie jeweils zur Gruppe user0 hinzufügen

Geben Sie user3 und user4 keine Berechtigungen. Dies wurde bereits ausgeführt, da Others "---" Zugriff haben, und user3 und user4 sind NICHT Teil der Gruppe user0.

Erteilen Sie partielle Berechtigungen für Benutzer5 und Benutzer6 (z. B. "rx"): -can't done ???? - wenn ich die Anderen Berechtigungen "rx" mache, dann gibt es das auch an user3 und user4, aber ich möchte, dass sie auf der schwarzen Liste stehen (mit "---" Berechtigungen).


Im Hintergrund habe ich bereits gelesen:

1
Es scheint, dass Sie dies durch die Verwendung mehrerer Gruppen erreichen können. Sehen Sie, wenn dies hilft: http://unix.stackexchange.com/questions/195466/setting-multiple-groups-as-directory-owners fixer1234 vor 7 Jahren 0

2 Antworten auf die Frage

2
virtex

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 -ldVerzeichnis 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 getfaclBefehl 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 lsBefehl zu zeigen scheint, dass das Verzeichnis für Gruppen schreibbar ist. Der getfaclBefehl zeigt jedoch, dass dies nicht der Fall ist. Die ACL ist hier richtig, dh wenn ein Benutzer in der usersGruppe, 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.

2
dirkt

Ja, wenn Sie es gerne so formulieren möchten, sind die Standard-Unix-Berechtigungen "Whitelist".

Der übliche Weg, um mit Berechtigungen umzugehen, besteht darin, eine neue Gruppe zu erstellen, die über alle Dateien abstrahiert, die sich ähnlich verhalten sollen, diesen Dateien die entsprechende Gruppen-ID zuweisen und alle Benutzer, die diese Berechtigungen erhalten sollen, in die Gruppe aufnehmen. Deshalb können Benutzer Mitglieder vieler Gruppen sein.

Berechtigungen Geräte zu verwenden sind in der gleichen Art und Weise behandelt, das ist, warum Sie haben Gruppen wie input, diskusw. in vielen Distributionen.

In diesem Sinne können Sie sich eine Gruppe als eine bestimmte "Regel" Ihres "Berechtigungsregelsatzes" vorstellen. Die Einschränkung ist, dass jede Datei nur eine einzige Regel mit einer einzigen rwxKombination von Berechtigungen haben kann, die über die Berechtigungen "Benutzer" und "Andere" hinausgeht.

Ihr Szenario, in dem eine Gruppe von Benutzern über einen Satz von Berechtigungen verfügen muss und eine andere Gruppe über einen anderen Satz von Berechtigungen für dieselbe Datei oder dasselbe Verzeichnis verfügen muss, kann nicht mit Standard-Unix-Berechtigungen implementiert werden.

Es gibt jedoch eine Erweiterung der Standard-Unix-Berechtigungen, die als Zugriffssteuerungslisten ( Access Control Lists, ACL) bezeichnet wird. Siehe man aclfür weitere Einzelheiten. Bei vielen Dateisystemen müssen Sie eine Option angeben, um Acls beim Mounten zu aktivieren.