Linux-Verzeichnisberechtigungen für verschiedene Gruppen

8

Ich habe zwei Verzeichnisse: "public" und "private". Ich habe drei Benutzer: "Chris", "John", "Dan". Ich habe zwei Gruppen: "Pub", "Priv" und "Gott".

  • Die Gruppe "gott" sollte vollen Zugang zu "öffentlich" und "privat" haben.
  • Die Gruppe "pub" sollte die einzige Gruppe mit Berechtigungen für "public"
  • sein
  • Die Gruppe "priv" sollte die einzige Gruppe sein, die über "private" verfügt.

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?

    
Schutzstaffel 12.11.2012, 21:11
quelle

4 Antworten

15

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.

    
Bratchley 14.03.2013, 17:58
quelle
4

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: -)

    
Nikos C. 12.11.2012 22:01
quelle
2

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.

    
Miljen Mikic 12.11.2012 21:48
quelle
2

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 .

    
twalberg 12.11.2012 22:17
quelle

Tags und Links