Wie erteile ich jedem Benutzer unterschiedliche Berechtigungen?


11

Ich benutze Linux seit einigen Jahren und sollte diese Antwort wirklich kennen, aber ich habe Probleme, sie zu finden. Insbesondere habe ich Debian-basierte Distributionen verwendet ... hauptsächlich Ubuntu.

Wenn ich einen Server mit mehr als drei Benutzern habe, wie lege ich für jeden Benutzer einen anderen Satz von Berechtigungen für eine Datei fest.

Beispielsweise:

Wenn ich eine Datei mit diesen Berechtigungen und Eigentumsrechten habe:

rwx rw_ r__ user1:group1 file1.txt

und ich habe 3 Benutzer mit diesen gewünschten Berechtigungen ....

  • user1 rwx
  • user2 rw_
  • user3 r__

Alles was ich tun muss ist, dass Benutzer1 die Datei besitzt, Benutzer2 in Gruppe1 ist und Benutzer3 beides nicht sein kann - richtig?

Aber was , wenn ich einen habe user4 und user5 .

  • user4 _wx
  • user5 __x

Wie würde ich das einrichten?

Ich musste das vorher noch nicht tun, aber diese Frage wurde mir von einem Windows-Administrator gestellt, und ich konnte sie ehrlich gesagt nicht beantworten.


8
Für diese Granularität der Berechtigungen müssen Sie Zugriffssteuerungslisten (ACLs) verwenden. Ein kurzes Lernprogramm finden Sie hier . Obwohl ein Wort der Vorsicht, sobald Sie den Pfad der ACLs anstelle von Berechtigungen eingeschlagen haben, ist es ein sehr rutschiger Hang und die Dinge werden sehr schnell kompliziert mit einigen unbeabsichtigten Konsequenzen am Ende.
MelBurslan

Antworten:


19

Herkömmliche Unix-Berechtigungen erlauben nur Benutzer-, Gruppen- und andere Berechtigungen, wie Sie gefunden haben. Dies kann dazu führen, dass eine umständliche Kombination von Gruppen erstellt werden muss ...

Daher wurde eine neue Form von ACL (Access Control Lists) in Angriff genommen. Auf diese Weise können Sie mehrere Benutzer und mehrere Gruppen mit unterschiedlichen Berechtigungen angeben. Diese werden mit dem setfaclBefehl gesetzt und mit gelesengetfacl

$ setfacl -m u:root:r-- file.txt
$ setfacl -m u:bin:-wx file.txt 
$ setfacl -m u:lp:--x file.txt 
$ getfacl file.txt
# file: file.txt
# owner: sweh
# group: sweh
user::rw-
user:root:r--
user:bin:-wx
user:lp:--x
group::r--
mask::rwx
other::r--

An der lsAusgabe können Sie leicht erkennen, ob eine Datei eine ACL hat :

$ ls -l file.txt
-rw-rwxr--+ 1 sweh sweh 0 Jul 26 10:33 file.txt

Das +am Ende der Berechtigungen zeigt eine ACL an.


2

Ja, ACL: s ermöglichen das freie Festlegen unterschiedlicher Rechte für verschiedene Benutzer oder Gruppen. IIRC Die üblichen Gruppenberechtigungen begrenzen den Satz von Berechtigungen, die Gruppen und Benutzer über ACL: s haben können (siehe maskin getfacl), setfaclsollten sich jedoch damit befassen, wenn Sie Berechtigungen hinzufügen.

In einigen Fällen müssen Sie jedoch fragen, ob die Berechtigungen sinnvoll sind.

Ich habe 3 Benutzer mit diesen gewünschten Berechtigungen ....
- Benutzer1 rwx
- Benutzer2 rw_
- Benutzer3 r__

Sie können dies mit ACL: s oder (ungefähr) mit den üblichen Unix-Berechtigungen implementieren, indem Sie Benutzer1 zum Eigentümer der Datei, Benutzer2 zu einem Mitglied der Gruppe machen und anderen, einschließlich Benutzer3, Lesezugriff gewähren. Dann hätte dann jeder (mit Zugriff auf das Verzeichnis) auch Lesezugriff.

Betrachten wir die Bedeutung dieser Berechtigungen. Sie haben einen Benutzer, der lesen kann, und einen anderen, der lesen und schreiben kann. Das ist völlig üblich. Keiner von beiden hat Zugriff auf die Ausführung der Datei, aber dann soll auch ein dritter Benutzer dazu in der Lage sein.

Das macht für mich nicht viel Sinn. Jeder Benutzer, der die Datei lesen, eine Kopie (*) erstellen, sie als ausführbar markieren und ausführen kann, ohne Zugriff auf die Originaldatei zu haben. Die einzige Situation, in der es sinnvoll ist, für einige Benutzer Ausführungszugriff zu haben, für andere jedoch nicht, ist, wenn die ausführbare Datei über suid über erhöhte Berechtigungen verfügt. In diesem Fall sollten Sie jedoch auch keine anderen Benutzer mit Schreibzugriff auf die Datei haben.

Im gleichen Sinne machen Benutzer4 mit -wxund Benutzer5 mit für --xmich keinen Sinn. Nur-Schreib-Zugriff könnte sinnvoll sein, wenn die Möglichkeit besteht, nur Anhänge zuzulassen , aber das Berechtigungssystem ist nicht so detailliert .

(* es sei denn, sie können nirgendwo schreiben)


Wenn wir jedoch die seltsame Anforderung für das xBit entfernen , bleibt eine Datei übrig, in der Benutzer1 und Benutzer2 Schreibzugriff und Benutzer3 Lesezugriff haben sollten. Ein Writer und mehrere Reader wären mit dem herkömmlichen Modell einfach, aber dieser Fall würde Tricks erfordern, um die Dateiberechtigungen mit den Berechtigungen des enthaltenen Verzeichnisses zu kombinieren. Glücklicherweise ist in vielen Fällen ein Benutzer mit mehr Berechtigungen ausreichend.

Ohne die Anforderung für das Ausführungsbit scheint dies ein Fall für die Verwendung von ACL: s zu sein. Aber damit scheint mir dieses besondere Beispiel ziemlich verworren zu sein.


Wenn der Benutzer nur in ein Dateisystem schreiben kann, das ohne Ausführungsberechtigung bereitgestellt wurde, kann er keine Kopie ausführen, selbst wenn er das Original ausführen könnte, wenn die entsprechenden Berechtigungen festgelegt würden. Auch "Nur ausführen" kann sinnvoll sein, wenn Sie verhindern möchten, dass sie nach Exploits suchen. -wxist aber auf jeden Fall seltsam.
Celtschk

1
Einige Systeme haben einen Mechanismus, der nur Anhänge zulässt. Linux hat chattr +azum Beispiel. Und auch ohne systemspezifische Daten können Sie die Datei zu einem FIFO machen. --xund im weiteren -wxSinne auch für Verzeichnisse sinnvoll .
Random832
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.