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.
quelle
Antworten:
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
setfacl
Befehl gesetzt und mit gelesengetfacl
An der
ls
Ausgabe können Sie leicht erkennen, ob eine Datei eine ACL hat :Das
+
am Ende der Berechtigungen zeigt eine ACL an.quelle
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
mask
ingetfacl
),setfacl
sollten sich jedoch damit befassen, wenn Sie Berechtigungen hinzufügen.In einigen Fällen müssen Sie jedoch fragen, ob die Berechtigungen sinnvoll sind.
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
-wx
und Benutzer5 mit für--x
mich 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
x
Bit 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.
quelle
-wx
ist aber auf jeden Fall seltsam.chattr +a
zum Beispiel. Und auch ohne systemspezifische Daten können Sie die Datei zu einem FIFO machen.--x
und im weiteren-wx
Sinne auch für Verzeichnisse sinnvoll .