Angenommen, ich habe zwei Benutzer Alice und Bob sowie eine Gruppe GROUPNAME und einen Ordner foo
. Beide Benutzer sind Mitglieder von GROUPNAME (unter Linux und ext3).
Wenn ich als Benutzer Alice eine Datei speichern unter foo
, sind die Berechtigungen: -rw-r--r-- Alice Alice
. Ist es jedoch möglich, dass jede Datei, die in einem Unterverzeichnis von gespeichert wird, foo
über Berechtigungen verfügt -rwxrwx--- Alice GROUPNAME
(z. B. Besitzer Alice, Gruppe GROUPNAME)?
permissions
group
acl
umask
Student
quelle
quelle
Antworten:
Sie können die zugewiesenen Berechtigungs Bits steuern mit
umask
, und die Gruppe , die durch das Verzeichnis machen setgid zuGROUPNAME
.Beachten Sie, dass Sie das
chgrp
/chmod
für jedes Unterverzeichnis ausführen müssen; es propagiert nicht automatisch (das heißt, weder bestehende noch anschließend unter einem angelegtes Verzeichnis Setgid Verzeichnis wird setgid , obwohl diese in der Gruppe sein wirdGROUPNAME
).Beachten Sie auch, dass dies
umask
ein Prozessattribut ist und für alle Dateien gilt, die von diesem Prozess und seinen untergeordneten Elementen erstellt wurden (die die jeweilsumask
in Kraft befindlichen übergeordnetenfork()
Elemente übernehmen). Benutzer müssen dies möglicherweise festlegen~/.profile
und auf Dinge achten, die nicht mit Ihrem Verzeichnis zusammenhängen und andere Berechtigungen erfordern. Module können nützlich sein, wenn Sie unterschiedliche Einstellungen für verschiedene Aufgaben benötigen.Sie können die Dinge etwas besser steuern, wenn Sie POSIX-ACLs verwenden. Es sollte möglich sein, sowohl eine Berechtigungsmaske als auch eine Gruppe anzugeben und diese sinnvoll zu verbreiten. Die Unterstützung für POSIX-ACLs ist jedoch unterschiedlich.
quelle
-rwxrwx--- A G
)?Verwenden Sie nach Möglichkeit Zugriffssteuerungslisten (ACL) .
Stellen Sie unter Linux sicher, dass das von Ihnen verwendete Dateisystem ACLs unterstützt (die meisten Unix-Dateisysteme unterstützen dies). Möglicherweise müssen Sie die Mount-Optionen ändern, um ACLs zu aktivieren: Bei ext2 / ext3 / ext4 müssen Sie die
acl
Mount-Option explizit angeben , damit der Eintrag in/etc/fstab
wie folgt aussehen sollte/dev/sda1 / ext4 errors=remount-ro,acl 0 1
. Führen Sie dies ausmount -o remount,acl /
, um die ACLs zu aktivieren, ohne einen Neustart durchzuführen. Installieren Sie auch die ACL - Kommandozeilen - Toolsgetfacl
undsetfacl
, in der Regel in einem Paket zur Verfügung gestellt genanntacl
.Nachdem die einmalige Einrichtung abgeschlossen ist, ändern Sie die Zugriffssteuerungsliste des Verzeichnisses, um der Gruppe Schreibberechtigungen zu erteilen und diese Berechtigungen an neu erstellte Dateien zu vererben. Unter Linux:
Wenn ACLs keine Option ist, das Verzeichnis von der Gruppe im Besitz machen
GROUPNAME
, und legen Sie die Berechtigungen für 2775 oder 2770:chmod g+rwxs /path/to/directory
. Dass
hier bedeutet das setgid-Bit; Für ein Verzeichnis bedeutet dies, dass die in diesem Verzeichnis erstellten Dateien zu der Gruppe gehören, der das Verzeichnis gehört.Sie müssen auch Alice und Bobs Umask so einstellen , dass alle ihre Dateien standardmäßig für Gruppen beschreibbar sind. Die Standardeinstellung für umask auf den meisten Systemen ist 022. Dies bedeutet, dass Dateien alle Berechtigungen haben können, mit Ausnahme des Schreibens nach Gruppen und anderen. Ändern Sie dies in 002, was bedeutet, dass nur das Schreiben durch andere Personen verboten wird. Normalerweise würden Sie diese Einstellung in Folgendes einfügen
~/.profile
:quelle
mount
Befehl mit derremount
Option, so dass er nicht verwendet wirdfstab
. Dasacl
Doppelte bedeutet, dass das Dateisystem bereits mit deracl
Option gemountet wurde und harmlos ist.acl
ist übrigens die Standardeinstellung für ext4 in den letzten Kerneln (der Patch war noch ganz neu, als ich diese Antwort schrieb). F2: Sie können die Befehle in beliebiger Reihenfolge ausführen.GROUPNAME
anstattG
, es deutlicher zu machenDiese Frage passt gut zu Linux
acl
. Da Sie Ihr Betriebssystem nicht angeben, gehe ich im Folgenden von Linux aus. Hier ist eine Beispielsitzung.Ich kenne kein wirklich gutes
acl
Tutorial, aber Sie könnten es schlechter machen als http://www.vanemery.com/Linux/ACL/linux-acl.htmlBeachten Sie, dass sich die Standardeinstellung
acl
wie eine lokale Umask verhält. Da umasks zumindest unter Linux global angewendet werden, ist dies der einzige Weg, den ich kenne, um den Effekt einer lokalen umask zu erzielen. Aus irgendeinem Grund ist dies ein wenig bekanntes Feature. Das Netz ist mit Leuten übersät, die nach einem lokalen Umask-Override fragen, aber fast niemand scheint daran zu denken, ihn zu benutzenacl
.Beachten Sie auch, dass Sie die Partition, in der Sie arbeiten, mit
acl
Unterstützung mounten müssen , z.Sitzung folgt:
Legen Sie die Gruppe von
foo
zustaff
und die ACL von Gruppe und Benutzer vonfoo
zu festrwx
.Setzen Sie auch die Standard-Acls von Benutzer und Gruppe auf
rwx
. Dies definiert Berechtigungen, von denen Dateien und Verzeichnisse erbenfoo
. Alle unter foo erstellten Dateien und Verzeichnisse haben also Gruppenberechtigungenrw
.Erstellen Sie nun einige Dateien
foo
als Benutzerfaheem
undjohn
.Dateien auflisten. Beachten Sie, dass sowohl Dateien im Besitz
faheem
als auch Dateien im Besitz vonjohn
mit Gruppenberechtigungen erstellt werdenrw
.quelle