Ich habe zwei Verzeichnisse: "public" und "private". Ich habe drei Benutzer: "Chris", "John", "Dan". Ich habe zwei Gruppen: "Pub", "Priv" und "Gott".
Als root:
useradd chris
useradd john
useradd dan
usermod -g god chris
usermod -g pub john
usermod -g priv dan
chgrp god public private
chgrp pub public
chgrp priv private
su chris
Als "chris":
cd public/
touch test
= Berechtigung verweigert
Das gleiche gilt für die anderen Benutzer ... unter "dan" habe ich keine Rechte über das "private" -Verzeichnis, obwohl "dan" ein Mitglied der "priv" -Gruppe ist.
Hast du eine Idee?
Nun, ich weiß, das ist relativ alt, aber Twalberg ist richtig: Es gibt eigentlich einen relativ einfachen Weg, dies mit POSIX ACLs zu erreichen. Sie haben seit den späten 90ern / frühen 2000ern existiert, also weiß ich nicht, warum mehr Leute sie nicht benutzen.
Vorgehensweise: Führen Sie, wie Sie es bereits getan haben, einfach diesen Befehl aus:
%Vor%und in einem Befehl bekommst du, was du willst. Sie werden ewig damit verbringen, herauszufinden, wie Sie es mit NUR traditionellen Unix-Berechtigungen tun können.
Der Rat von Mikic kann immer noch gut sein (je nachdem, was Sie erreichen wollen), und es könnte einfacher sein, so wenige Gruppen wie möglich in Ihren Berechtigungen zu erwähnen (oder vielleicht möchten Sie, dass "chris "ist kein normaler Benutzer, sondern ein administrativer Benutzer, wieder kommt es darauf an, was Sie konstruieren wollen."
Ich habe etwas näher zu dem vorgeschlagen, was Sie erreichen möchten, da es Situationen geben kann, in denen Sie versuchen, einem zweiten Benutzer / einer zweiten Gruppe Zugriff auf ein Verzeichnis zu geben, aber nicht zwischen "chris" wählen möchten Zugang zu diesen zwei Verzeichnissen und "chris" erhalten Zugang zu all den anderen Dateien und Verzeichnissen "pub" und "priv" könnte Zugang zu haben. Bei ACLs müssen Sie diese Auswahl nicht treffen, weshalb sie hinzugefügt wurden und nun ein Kernbestandteil der meisten Unix- (und BSD- und Linux-) Plattformen sind.
Sie haben gesagt, dass die Gruppe "pub" die einzige Gruppe sein sollte, die Berechtigungen für "public" hat. Aber vorher sagten Sie, dass "Gott" auch Zugang haben sollte. So kann "Pub" nicht der einzige sein, der Zugang hat. Dito für "priv".
Sie sagen auch:
Ich habe zwei Gruppen: "pub", "priv" und "god".
Nun, das sind drei Gruppen. (Erinnert mich an dieses berühmte Zitat: "Es gibt drei Arten von Menschen auf dieser Welt; diejenigen, die zählen können und diejenigen, die nicht können." :-P)
Ihr Basiskonzept scheint falsch zu sein. Die Funktionsweise ist ziemlich einfach. Erstelle zwei Gruppen, "Pub" und "Priv". Platzieren Sie alle Benutzer, die Zugriff auf die Verzeichnisse benötigen, entsprechend. Benutzer, die Zugriff auf beide Verzeichnisse benötigen, sollten zu beiden Gruppen gehören.
In diesem Fall sollte "chris" sowohl in die Gruppe "pub" als auch in die Gruppe "priv" gestellt werden. "John" sollte in die Gruppe "Pub" gestellt werden. "dan" sollte in die Gruppe "priv" gestellt werden.
Was Sie versucht haben, ist, dass die Verzeichnisse zwei Gruppen gehören. Das ist nicht möglich. Es sind Benutzer, die Teil mehrerer Gruppen sein können, nicht Dateien oder Verzeichnisse. Sie haben es einfach rückwärts: -)
Es gibt zwei problematische Dinge in Ihrem Ansatz. Der erste ist:
%Vor% Mit dem zweiten Befehl haben Sie den Effekt des ersten verworfen. Das Verzeichnis public
gehört jetzt zu pub
group, nicht zu god
mehr.
Die zweite Sache ist, dass Sie wahrscheinlich keine Schreibberechtigungen für das Verzeichnis public
an die Gruppe vergeben haben, die es besitzt (die Tatsache, dass der Benutzer, der den Befehl touch
ausführt, zur Gruppe des Verzeichnisses zählt, ist nicht wichtig). p>
Versuchen Sie Folgendes:
%Vor%und machen Sie es mit anderen Verzeichnissen ähnlich. Was Sie zunächst erreichen möchten, ist jedoch unmöglich, da das Verzeichnis nur zu einer Gruppe gehören kann. Nikos hat es in seiner Antwort gut ausgearbeitet - Platziere den Benutzer in mehr Gruppen.
Sie müssen ein Dateisystem verwenden, das ACLs unterstützt. Wie in anderen Antworten erwähnt, ist die Gruppenzugehörigkeit pub
und priv
mit den grundlegenden Linux-Berechtigungen möglich, aber um Zugriff auf die Gruppe god
zu gewähren, da Dateien / Verzeichnisse nur ein einziges Gruppenkennzeichen haben können, wird ein ACL. Die meisten der aktuellen Dateisysteme sollten diese Funktionalität unterstützen - siehe die Manpages für getfacl
und setfacl
.
Tags und Links linux permissions