Verwenden von setfacl, damit Gruppenmitglieder in eine beliebige Datei in einem Verzeichnis schreiben können

11

Ich möchte setfacl verwenden, damit jeder in der Gruppe 'app' jede in / usr / local / users / app enthaltene Datei bearbeiten kann, unabhängig davon, was die traditionellen UNIX-Berechtigungen sagen. Ich habe zwei Benutzer John und Ben. Ich habe versucht, den Anweisungen einer anderen Frage zu folgen , aber John kann nicht in einige Dateien schreiben. Es sieht so aus, als ob dies an der ACL-Maske liegt. Ich habe jedoch die Standardmaske für das Verzeichnis von rwx festgelegt. Sollten die darin enthaltenen Dateien diese nicht beim Erstellen erben?

Zum Beispiel kann John nicht in die unten stehende Datei schreiben, aber er ist Mitglied der Gruppe 'App', die Schreib-Acls in der Datei hat. Ich bin überrascht, dass er die Datei nicht bearbeiten kann.

ben@app1:/usr/local/users$ ls -la app/app-1.0-SNAPSHOT/lib/play.templates_2.10-2.1.1.jar 
-rw-r--r--+ 1 ben users 38326 Apr  2 10:21 app/app-1.0-SNAPSHOT/lib/play.templates_2.10-2.1.1.jar

ben@app1:/usr/local/users/app$ getfacl app-1.0-SNAPSHOT/lib/
# file: app-1.0-SNAPSHOT/lib/
# owner: ben
# group: users
user::rwx
group::rwx          #effective:r-x
group:app:rwx       #effective:r-x
mask::r-x
other::r-x
default:user::rwx
default:group::rwx
default:group:app:rwx
default:mask::rwx
default:other::r-x

ben@app1:/usr/local/users$ getfacl app/app-1.0-SNAPSHOT/lib/play.templates_2.10-2.1.1.jar 
# file: app/app-1.0-SNAPSHOT/lib/play.templates_2.10-2.1.1.jar
# owner: ben
# group: users
user::rw-
group::rwx          #effective:r--
group:app:rwx       #effective:r--
mask::r--
other::r--
Ben McCann
quelle

Antworten:

7

Sie werden den "effektiven" Kommentar bemerken, den getfacl auf Sie wirft. Das Problem ist, dass Berechtigungen berechnet werden, sodass "App" das Schreibbit nicht gesetzt bekommt. Dies geschieht, weil die Maske in der Datei schreibgeschützt ist. Die Maske wird verwendet, um die Anzahl der Berechtigungen zu begrenzen, die möglicherweise für eine bestimmte Datei oder ein bestimmtes Verzeichnis erteilt werden könnten.

Ein Beispiel dafür, warum Sie dieses Verhalten wünschen würden, wäre, wenn Sie wüssten, dass die Datei legitimerweise unterschiedliche Benutzer / Gruppen benötigen könnte, um Zugriff darauf zu erhalten, aber aus irgendeinem Grund wurden die Dinge mit Berechtigungen kompliziert und Sie wollten eine Möglichkeit, "Was auch immer die andere" zu sagen Standardberechtigungen sind festgelegt, unabhängig davon, um welche Gruppenmitgliedschaft es sich handelt oder welche rekursive setfacl später ausgeführt wird. Geben Sie dies definitiv nicht heraus ! " Der besitzende Benutzer hat einen besonderen Status in der POSIX-Welt, er hat Rechte, die andere Benutzer nicht haben, wie die Fähigkeit, nicht root zu sein und Berechtigungen für eine Datei zu ändern, und seine Rechte werden nicht durch die Maske eingeschränkt (was wäre) sowieso sinnlos wegen des ersten Privilegs, das das System ihnen gewährt). Aus diesem Grund erhalten sie immer noch rwx, obwohl die Maske eingeschränkt ist.

Um Ihre spezielle Frage zu beantworten : Fügen Sie das Schreibbit zur Maske in der Datei hinzu und versuchen Sie es erneut als johnBenutzer.

Hier ist eine Befehlszeilenversion der obigen Erklärung. Beachten Sie, wie sich die "effektiven" Rechte ändern, wenn ich nur die Maske ändere.

Bratchley
quelle
Vielen Dank. Ich schätze die Antwort sehr. Können neue Dateien mit einer Standardmaske von rwx erstellt werden? Ich habe meine Frage mit ein paar weiteren Details bearbeitet.
Ben McCann
Ja, die Maske ist eine der Kategorien (wie Benutzer und Gruppen), für die Sie eine Standard-ACL festlegen können. Die Standardmaske sollte an Unterverzeichnisse erben und auf Dateien angewendet werden. BEISPIEL: setfacl -md: m :: rwx / path / to / Dir
Bratchley
Die Standard-ACL erbt an Unterverzeichnisse, aber nicht an Dateien, wodurch die ACLs völlig unbrauchbar werden :-(
Ben McCann
Um sicherzugehen, dass es sich um dasselbe handelt, sprechen Sie über die Standard-ACL für den Maskeneintrag? Das bekomme ich in Tests.
Bratchley
Ich habe auch den obigen Test für neue Dateien in / testBed wiederholt, nachdem ich die effektive Maske im übergeordneten Verzeichnis geändert und das gleiche Ergebnis erhalten habe (der Standardmaskeneintrag wird auf die Datei angewendet und nicht auf die effektive Maske des übergeordneten Elements).
Bratchley
0

Es ist unmöglich. cp, rsync usw. erstellen Dateien, bei denen Standard-ACLs ignoriert werden

/server/183800/why-does-cp-not- respekt-acls

Ben McCann
quelle
falsch Der Benutzer stieß auf dieselbe Maske, auf die Sie zuvor gestoßen waren, und erhielt eine falsche Antwort von einer anderen Person. Es liegt nicht an "cp" oder einem anderen Dienstprogramm, die Standard-ACL-Einträge zu ignorieren, die auf Dateisystemebene auftreten, wenn cp die Datei erstellt. Das Tool hat die Option, die Systemaufrufe auszugeben, um die erforderlichen ACLs zu entfernen / zu streifen, müsste sich jedoch darum bemühen.
Bratchley
Zum Teufel ist, dass Sie sehen können, dass der ACL-Eintrag, über den sie sprechen, nur die effektiven Berechtigungen sind, von denen sie erwarten, dass sie nicht vorhanden sind. Das war eine perfekte Gelegenheit zu sagen: "Hey Mann, überprüfe deine Maske."
Bratchley
1
Eigentlich nehme ich das zurück, es sieht so aus, als hätte EvilRyry über die Maske gepostet und das OP hat nur mit "es hat nicht funktioniert" geantwortet und dann eine getfacl-Ausgabe gepostet, die zu zeigen scheint, dass "Felles" rwx in die Datei bekommen haben. Bei dieser Rate stimmt die Antwort mit der höchsten Stimme nicht mit meiner persönlichen Erfahrung und dem überein, was ich hier anhand von Befehlsbeispielen dargestellt habe.
Bratchley