web-dev-qa-db-fra.com

Accorder automatiquement l'autorisation pour les nouveaux fichiers créés dans le dossier

J'ai un dossier pour lequel l'autorisation est définie sur 777, mais lorsque j'ajoute des fichiers ou des dossiers dans ce dossier. Les fichiers extraits ou la permission de dossier ne changent jamais. La permission du dossier de destination est 777 et je veux que ce que je vais ajouter dans ce dossier obtienne automatiquement la permission de 777.

Lorsque j'ajoute des fichiers ou des dossiers en extrayant .Zip dans ce dossier, les autorisations pour les dossiers/fichiers extraits ne changent pas automatiquement. Je dois toujours chmod pour ajouter récemment un fichier/dossier!

7
Ibrahim

Ce que vous voulez s'appelle ACL - Listes de contrôle d'accès .

La liste de contrôle d'accès (ACL) fournit un mécanisme d'autorisation supplémentaire, plus flexible, pour les systèmes de fichiers. Il est conçu pour vous aider avec les autorisations de fichiers UNIX. La liste de contrôle d'accès vous permet d'accorder des autorisations pour tout utilisateur ou groupe à n'importe quelle ressource de disque.

Le paquet acl devrait déjà être installé. Pour le vérifier, exécutez: dpkg -s acl.

Pour utiliser les ACL, vous devez l'activer pour votre système de fichiers. Mais cela peut être déjà activé . Pour le vérifier, utilisez tune2fs -l. Remplacez /dev/sda6 par votre système:

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

Si vous voyez acl Word, il est déjà activé pour le périphérique /dev/sda6.

Si vous ne voyez pas acl Word, exécutez tune2fs -o acl /dev/sda6 pour l'activer.


Pour modifier les ACL, utilisez la commande setfacl . Pour ajouter des autorisations, utilisez setfacl -m .

Pour définir l'autorisation pour l'utilisateur:

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

Ceci définira rwx ACL, pour l'utilisateur username sur/chemin/vers/dossier. Cela signifie que tous les fichiers créés dans ce dossier auront l'autorisation rwx pour username.


Pour définir l'autorisation pour le groupe:

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

Ceci définira rwx ACL, pour le groupe groupname sur/chemin/vers/dossier. Cela signifie que tous les fichiers créés dans ce dossier auront l'autorisation rwx pour le groupe groupname.


Pour définir l'autorisation pour les autres:

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

Cela définira rwx ACL, pour les autres dossiers/path/to/folder. Cela signifie que tous les fichiers créés dans ce dossier auront l'autorisation rwx pour les autres.


Pour vérifier l'autorisation:

$ getfacl /path/to/folder

Combiner acl

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

ACL par défaut

 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.

Donc, si vous définissez une ACL par défaut, il s'agira de préféré ACL. Cela signifie que si ACL est défini sur user ou group, le nouveau fichier créé héritera par défaut acl de toute façon . Soyez prudent avec les ACL par défaut.

Pour définir la valeur par défaut acl, utilisez la touche -d,

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

ou utilisez default Word

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

Soyez prudent avec la définition de la liste de contrôle d'accès par défaut. Par exemple si défini comme ceci:

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

et maintenant chercher cette 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

ACL par défaut pour le groupe et l'utilisateur sera rwx automatiquement!

Supprimer ACL

$ setfacl -b /path/to/folder

Cela supprimera tous les ACL du dossier


Finalement

Si vous êtes uniquement utilisateur du système, je vous recommande d'utiliser la liste de contrôle d'accès par défaut.

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

Cela fera ce que vous voulez pour/chemin/vers/dossier

Sources

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

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

11
c0rp