Commandes Linux : setfacl

SETFACL

Installé avec le paquet acl
Voir aussi : getfacl

 

Afficher la version de la commande setfacl

setfacl --version

ou

apt-cache policy acl

 

Ajouter des ACL étendues sur un fichier/dossier à partir de la ligne de commande

setfacl -m u:user:(rwx),g:group:(rwx) fichiers|dossiers

ex :

Avant modification :
# file: file.txt
# owner: root
# group: root
user::rw-
group::r--
other::r--

Modification des ACL étendues :
# setfacl -m u:adminsys:rw,g:adminsys:r file.txt
Après modification :
# file: file.txt
# owner: root
# group: root
user::rw-
user:adminsys:rw-
group::r--
group:adminsys:r--
mask::rw-
other::r--

Rmq :
Un fichier/dossier possédant des ACL étendues est identifié par un “+” lors de la commande ls :

-rw-rw-r--+  1 root     root        0 nov.  19 23:46 file.txt

 

Ajouter des ACL étendues sur un fichier/dossier à partir d’un fichier de référence

setfacl -M aclfilename fichiers|dossiers

ex :

Avant modification :
# file: file.txt
# owner: root
# group: root
user::rw-
group::r--
other::r--
Modification des ACL étendues :

Contenu du fichier listing.acl :

u:adminsys:rw
g:adminsys:r
# setfacl -M listing.acl file.txt
Après modification :
# file: file.txt
# owner: root
# group: root
user::rw-
user:adminsys:rw-
group::r--
group:adminsys:r--
mask::rw-
other::r--

Rmq :
Un fichier/dossier possédant des ACL étendues est identifié par un “+” lors de la commande ls :

-rw-rw-r--+  1 root     root        0 nov.  19 23:46 file.txt

 

Ajouter des ACL étendues récursivement sur un dossier

A partir de la ligne de commande
setfacl -Rm u:user:(rwx),g:group:(rwx) dossiers
A partir d’un fichier de référence
setfacl -RM aclfilename dossiers

Rmq :
Tous les fichiers et dossiers contenu dans le dossier spécifié en argument se verront affecter les mêmes ACL étendues.
Il est souvent plus cohérent d’attribuer des ACL différentes aux fichiers et aux dossiers, pour cela utiliser la commande find.

 

Ajouter des ACL étendues récursivement uniquement sur les fichiers

A partir de la ligne de commande
find . -type f -print0 | xargs -0 setfacl -m u:user:(rwx),g:group:(rwx)

ou

find . -type f -exec setfacl -m u:user:(rwx),g:group:(rwx) {} +

ou

find . -type f -exec setfacl -m u:user:(rwx),g:group:(rwx) {} \;
A partir d’un fichier de référence
find . -type f -print0 | xargs -0 setfacl -M aclfilename

ou

find . -type f -exec setfacl -M aclfilename {} +

ou

find . -type f -exec setfacl -M aclfilename {} \;

 

Ajouter des ACL étendues récursivement uniquement sur les dossiers

A partir de la ligne de commande
find . -type d -print0 | xargs -0 setfacl -m u:user:(rwx),g:group:(rwx)

ou

find . -type d -exec setfacl -m u:user:(rwx),g:group:(rwx) {} +

ou

find . -type d -exec setfacl -m u:user:(rwx),g:group:(rwx) {} \;
A partir d’un fichier de référence
find . -type d -print0 | xargs -0 setfacl -M aclfilename

ou

find . -type d -exec setfacl -M aclfilename {} +

ou

find . -type d -exec setfacl -M aclfilename {} \;

 

Supprimer toutes les ACL étendues sur un fichier/dossier

setfacl -b fichiers|dossiers

 

Supprimer toutes les ACL étendues récursivement sur un dossier

setfacl -Rb dossiers
Uniquement sur les fichiers contenus dans ce dossier
find . -type f -print0 | xargs -0 setfacl -b
find . -type f -exec setfacl -b {} +
find . -type f -exec setfacl -b {} \;
Uniquement sur les sous-dossiers contenus dans ce dossier
find . -type d -print0 | xargs -0 setfacl -b
find . -type d -exec setfacl -b {} +
find . -type d -exec setfacl -b {} \;

 

Supprimer des ACL sur un fichier/dossier

A partir de la ligne de commande
setfacl -x u:user,g:group fichiers|dossiers

ex :

# setfacl -x u:adminsys,g:adminsys file.txt

Récursivement : retirera toute ACL faisant référence à l’utilisateur ou au groupe spécifié (ne retournera pas d’erreur s’ils ne sont pas trouvés)
setfacl -Rx u:user,g:group dossiers

A partir d’un fichier de référence
setfacl -X aclfilename fichiers|dossiers

ex :
Avec listing.acl :

u:adminsys
g:adminsys
# setfacl -X listing.acl file.txt

Récursivement : retirera toute ACL faisant référence à l’utilisateur ou au groupe spécifié dans le fichier (ne retournera pas d’erreur s’ils ne sont pas trouvés)
setfacl -RX aclfilename dossiers

 

Restaurer les ACL d’une arborescence à partir d’un fichier de sauvegarde

L’emplacement de la restauration dépend du chemin spécifié lors de la sauvegarde.
Si les chemins sont relatifs à la racine, alors il faudra se placer à la racine pour restaurer les permissions et droits.
Si les chemins sont relatifs au dossier en question, alors il faudra se placer dans son répertoire parent.
Si les chemins sont absolus alors la restauration pourra se faire depuis n’importe quel dossier.

Cas d’un chemin relatif à un dossier :
# file: test/
# owner: root
# group: root
user::rwx
group::r-x
other::r-x

# file: test//file.txt
# owner: root
# group: root
user::rw-
group::r--
other::r--

# setfacl --restore=filename

ex :

# setfacl --restore=/home/adminsys/backupacl.acl
Cas d’un chemin relatif à la racine :
# file: home/adminsys/test/
# owner: root
# group: root
user::rwx
group::r-x
other::r-x

# file: home/adminsys/test//file.txt
# owner: root
# group: root
user::rw-
group::r--
other::r--

# (cd / ; setfacl --restore=filename)

ex :

# (cd / ; setfacl --restore=/home/adminsys/backupacl.acl)
Cas d’un chemin absolu
# file: /home/adminsys/test/
# owner: root
# group: root
user::rwx
group::r-x
other::r-x

# file: /home/adminsys/test//file.txt
# owner: root
# group: root
user::rw-
group::r--
other::r--

# setfacl --restore=filename

ex :

# setfacl --restore=/home/adminsys/backupacl.acl

 

Définir des ACL par défaut sur un dossier

Tous les nouveaux fichiers créés dans ce dossier hériteront de ces ACL par défaut.

setfacl -m d:u:username:{rwx},d:g:groupname:{rwx},d:o::{rwx} directory/

ex :

# setfacl -m d:u:adminsys:rwx,d:g:adminsys:rwx,d:o::rwx reptest/
Fermer le menu
%d blogueurs aiment cette page :