Erteilen Sie automatisch die Berechtigung für neu erstellte Dateien im Ordner

7

Ich habe einen Ordner, dessen Berechtigung auf 777 festgelegt ist, aber wenn ich Dateien oder Ordner hinzufüge, die in diesen Ordner entpackt werden. Extrahierte Dateien oder Ordnerberechtigungen ändern sich nie. Die Berechtigung für den Zielordner ist 777, und ich möchte, dass das, was ich in diesem Ordner hinzufüge, automatisch die Berechtigung für 777 erhält.

Wenn ich Dateien oder Ordner durch Extrahieren von .zip in diesen Ordner hinzufüge, ändert sich die Berechtigung für extrahierte Ordner / Dateien nicht automatisch. Ich muss immer chmod für neu hinzugefügte Datei / Ordner!

Ibrahim
quelle
Was ist die Umask , um das Konto zu deaktivieren , das die Dateien extrahiert?
Hennes
@Hennes, dank der Erwähnung von umask wusste ich nicht viel darüber. Nach Ihren Kommentaren habe ich Google durchsucht und mehr darüber erfahren. Damit habe ich mein Problem teilweise gelöst.
Ibrahim

Antworten:

13

Was Sie wollen, heißt ACL - Access Control Lists .

Die Zugriffssteuerungsliste (Access Control List, ACL) bietet einen zusätzlichen, flexibleren Berechtigungsmechanismus für Dateisysteme. Es wurde entwickelt, um UNIX-Dateiberechtigungen zu unterstützen. Mit ACL können Sie jeder Disc-Ressource Berechtigungen für jeden Benutzer oder jede Gruppe erteilen.

aclPaket sollte bereits installiert sein, um zu überprüfen, ob es ausgeführt wird : dpkg -s acl.

Um ACLs zu verwenden, sollten Sie sie für Ihr Dateisystem aktivieren. Es kann aber bereits aktiviert werden . Um es zu überprüfen, verwenden Sie tune2fs -l. Ersatz /dev/sda6für Ihr System:

$ tune2fs -l /dev/sda6 | grep "Default mount options:"
Default mount options:    user_xattr acl

Wenn Sie acl word sehen, ist es bereits für das Gerät aktiviert /dev/sda6.

Wenn Sie kein acl- Wort sehen, führen Sie es aus tune2fs -o acl /dev/sda6, um es zu aktivieren.


Verwenden Sie zum Ändern der ACL den Befehl setfacl . Verwenden Sie setfacl -m, um Berechtigungen hinzuzufügen .

So legen Sie die Berechtigung für den Benutzer fest:

$ setfacl -m "u:username:rwx" /path/to/folder

Dadurch wird die rwxACL für den Benutzer usernameauf / path / to / folder festgelegt. Dies bedeutet, dass alle in diesem Ordner erstellten Dateien die rwxBerechtigung für haben username.


So legen Sie die Berechtigung für die Gruppe fest:

$ setfacl -m "g:groupname:rwx" /path/to/folder

Dadurch wird die rwxACL für die Gruppe groupnamein / path / to / folder festgelegt. Dies bedeutet, dass alle in diesem Ordner erstellten Dateien die rwxBerechtigung zum Gruppieren haben groupname.


So legen Sie die Berechtigung für andere fest:

$ setfacl -m "o:rwx" /path/to/folder

Dadurch wird die rwxACL für andere Ordner in / path / to / festgelegt. Dies bedeutet, dass alle in diesem Ordner erstellten Dateien rwxBerechtigungen für andere haben.


So überprüfen Sie die Berechtigung:

$ getfacl /path/to/folder

Acl zu kombinieren

$ setfacl -m u:username:rwx,g:groupname:rwx,o:rwx /path/to/folder

Standard-ACL

 The new object inherits the default ACL of the containing directory as its
 access ACL.

 If no default ACL is associated with a directory, the mode parameter to the func‐
 tions creating file objects and the file creation mask (see umask(2)) are used to
 determine the ACL of the new object:

 The new object is assigned an access ACL containing entries of tag types
 ACL_USER_OBJ, ACL_GROUP_OBJ, and ACL_OTHER. The permissions of these entries
 are set to the permissions specified by the file creation mask.

Wenn Sie also die Standard-ACL festlegen, wird diese ACL bevorzugt . Das heißt , wenn Set ACL für useroder group, neu erstellte Datei erben würde die Standard acl sowieso . Gehen Sie vorsichtig mit der Standard-ACL um.

Um die Standard-ACL festzulegen, verwenden Sie den -dSchlüssel.

$ setfacl -d -m u::rwx,g::rwx,o::rwx /path/to/folder

oder benutze ein defaultWort

$ setfacl -m default:u::rwx,default:g::rwx,default:o::rwx /path/to/folder

Seien Sie vorsichtig beim Festlegen der Standard-ACL. Zum Beispiel, wenn so eingestellt:

$ setfacl -d -m o:--x /path/to/folder

und holen Sie jetzt diese ACL

$ getfacl /path/to/folder
# file: path/to/folder
# owner: c0rp
# group: c0rp
user::rwx
group::rwx
other::--x
default:user::rwx
default:group::rwx
default:other::--x

Standard-ACL für Gruppe und Benutzer wird rwxautomatisch!

ACL entfernen

$ setfacl -b /path/to/folder

Dadurch werden alle ACLs aus dem Ordner entfernt


Schließlich

Wenn Sie nur Benutzer im System sind, empfehle ich die Verwendung der Standard-ACL.

$ setfacl -d -m u::rwx,g::rwx,o::rwx /path/to/folder

Dies wird tun, was Sie für / path / to / folder wollen

Quellen

archlinux - https://wiki.archlinux.org/index.php/Access_Control_Lists

help.ubuntu - https://help.ubuntu.com/community/FilePermissionsACLs

c0rp
quelle
Nun, das ist eine großartige und vollständige Antwort! Vielen Dank @ c0rp
Ibrahim