Ich habe eine Reihe von Skripten und Anwendungen mit langer Laufzeit, die Ausgabeergebnisse in einem Verzeichnis speichern, das von einigen Benutzern gemeinsam genutzt wird. Ich möchte sicherstellen, dass alle Dateien und Verzeichnisse, die unter diesem freigegebenen Verzeichnis erstellt wurden, automatisch über u=rwxg=rwxo=r
Berechtigungen verfügen.
Ich weiß, dass ich umask 006
meine verschiedenen Skripte an der Spitze verwenden könnte , aber ich mag diesen Ansatz nicht, da viele Benutzer ihre eigenen Skripte schreiben und möglicherweise vergessen, die Umask selbst festzulegen.
Ich möchte wirklich nur, dass das Dateisystem neu erstellte Dateien und Verzeichnisse mit einer bestimmten Berechtigung festlegt, wenn es sich in einem bestimmten Ordner befindet. Ist das überhaupt möglich?
Update : Ich denke , dass dies mit POSIX-ACLs unter Verwendung der Standard-ACL-Funktionalität möglich ist, aber im Moment geht mir alles etwas über den Kopf. Wenn jemand erklären kann, wie Standard-ACLs verwendet werden, würde er diese Frage wahrscheinlich gut beantworten.
quelle
Antworten:
Um den richtigen Besitz zu erhalten, können Sie das Gruppensetuid-Bit im Verzeichnis mit setzen
Dadurch wird sichergestellt, dass die im Verzeichnis erstellten Dateien der Gruppe gehören. Sie sollten dann sicherstellen, dass jeder mit umask 002 oder 007 oder etwas Ähnlichem ausgeführt wird. Aus diesem Grund werden Debian und viele andere Linux-Systeme standardmäßig mit Benutzergruppen konfiguriert.
Ich kenne keine Möglichkeit, die gewünschten Berechtigungen zu erzwingen, wenn die Umask des Benutzers zu stark ist.
quelle
+s
Teil? Vielen Dank.Hier erfahren Sie, wie Sie Standard-ACLs verwenden, zumindest unter Linux.
Zunächst müssen Sie möglicherweise die ACL-Unterstützung in Ihrem Dateisystem aktivieren. Wenn Sie ext4 verwenden, ist es bereits aktiviert. Andere Dateisysteme (z. B. ext3) müssen mit dieser
acl
Option bereitgestellt werden. Fügen Sie in diesem Fall die Option zu Ihrem hinzu/etc/fstab
. Wenn sich das Verzeichnis beispielsweise in Ihrem Root-Dateisystem befindet:Dann montieren Sie es wieder:
Verwenden Sie nun den folgenden Befehl, um die Standard-ACL festzulegen:
Alle neuen Dateien
/shared/directory
sollten nun die gewünschten Berechtigungen erhalten. Natürlich hängt es auch von der Anwendung ab, die die Datei erstellt. Zum Beispiel können die meisten Dateien von Anfang an von niemandem ausgeführt werden (abhängig vom Modusargument für den Aufruf open (2) oder creat (2)), genau wie bei Verwendung von umask. Einige Dienstprogramme wiecp
,tar
undrsync
versuchen, die Berechtigungen der Quelldatei (en) beizubehalten, wodurch Ihre Standard-ACL ausgeblendet wird, wenn die Quelldatei nicht für Gruppen beschreibbar war.Hoffe das hilft!
quelle
umask
für alle Benutzer angemessen ist. = / unix.stackexchange.com/questions/71743/…cp
, wird versucht, die Berechtigungen der Quelldatei zu kopieren.umask
Hilft nicht einmal bei der Verwendungcp
. Ich habe das gleiche Problem mit gesehentar
. Siehe diese Frage .umask
.setfacl
works correctly
- ich gehe davon aus, dass dies fehlschlagen sollte, bin mir aber nicht sicher, da die Antwort diesen Punkt verfehlt.Es ist hässlich, aber Sie können den Befehl setfacl verwenden, um genau das zu erreichen, was Sie wollen.
Auf einem Solaris-Computer habe ich eine Datei, die die ACLs für Benutzer und Gruppen enthält. Leider müssen Sie alle Benutzer auflisten (zumindest konnte ich keinen Weg finden, dies anders zu machen):
Benennen Sie die Datei acl.lst und geben Sie Ihre tatsächlichen Benutzernamen anstelle von user_X ein.
Sie können diese Acls jetzt in Ihrem Verzeichnis festlegen, indem Sie den folgenden Befehl eingeben:
quelle
In Ihrem Shell-Skript (oder
.bashrc
) können Sie Folgendes verwenden:umask 022
umask
ist ein Befehl, der die Einstellungen einer Maske festlegt, die steuert, wie Dateiberechtigungen für neu erstellte Dateien festgelegt werden.quelle
umask 002
in meiner .bashrc-Datei tue.umask 002
beschränkt den Zugriff auf andere und lässt die Gruppe unverändert. Denken Sie daran, es istugo
- das ist Benutzergruppe andere. Denken Sie auch daran, dass umask im Grunde bedeutet, von den Standardeinstellungen abzuziehen. Für Dateien:666 - 002
würde 664 bedeuten, was bedeutet, dass die Gruppe nicht betroffen ist.