Pourquoi avons-nous besoin d'ACL ?
Chaque fichier sur n'importe quel système de fichiers UNIX aura un propriétaire/groupe et un ensemble d'autorisations. Imaginez un cas où plusieurs utilisateurs ont besoin d'accéder au même fichier et que les utilisateurs appartiennent à des groupes différents. Les listes de contrôle d'accès aux fichiers (FACL) ou simplement les ACL sont la liste des utilisateurs/groupes supplémentaires et leur autorisation d'accès au fichier.
Comment savoir quand un fichier est associé à une ACL
Il est très facile de savoir quand un fichier est associé à une ACL. ls -l commande produirait une sortie comme indiqué ci-dessous.
# ls -l -rw-r--r-+ 1 root root 0 Sep 19 14:41 file
Notez le + signer à la fin des autorisations. Cela confirme que le fichier est associé à une liste de contrôle d'accès.
Affichage des ACL
Pour afficher les informations ACL détaillées d'un fichier, utilisez le getfacl commande.
# getfacl /tmp/test # file: test # owner: root # group: root user::rw- user:john:rw- user:sam:rwx group::r-- mask::rwx other:---
Remarquez les 3 utilisateurs différents : lignes. La première ligne répertorie les autorisations de fichier standard du propriétaire du fichier. Les 2 autres autorisations d'utilisateur sont l'autorisation individuelle pour l'utilisateur john et sam. Le champ de masque ici ne s'applique qu'aux autorisations supplémentaires que nous avons accordées à l'utilisateur et aux groupes. Si le masque est défini sur rwx, les autorisations de lecture, d'écriture et d'exécution seront accordées à des utilisateurs/groupes supplémentaires. Si le masque est défini sur r-x, l'autorisation d'écriture ne sera pas accordée aux utilisateurs/groupes supplémentaires.En général, NE PAS définissez le masque sur autre chose que rwx. La valeur du masque n'affecte pas les autorisations utilisateur/groupe/autres UNIX standard.
Fichier sans ACL
Si vous exécutez la commande getfacl sur un fichier sans ACL, les lignes supplémentaires "user:" et "mask" ne seront pas affichées et les autorisations de fichier standard seront affichées.
# getfacl test # file: test # owner: root # group: root user::rw- group::r-- other::r--
Création et gestion des FACL
Le setfacl La commande est utilisée pour définir l'ACL sur le fichier donné. Pour donner un accès rw à l'utilisateur john sur le fichier /tmp/test :
# setfacl -m u:john:rw /tmp/test
L'option -m indique à setfacl de modifier les ACL sur le ou les fichiers mentionnés dans la ligne de commande. Au lieu de l'utilisateur john, nous pouvons avoir un groupe pour avoir une autorisation spécifique sur le fichier :
# setfacl -m g:accounts:rw /tmp/test
Les FACL pour plusieurs utilisateurs et groupes peuvent également être définis avec une seule commande :
# setfacl -m u:john:rw,g:accounts:rwx /tmp/test
FACL par défaut sur les répertoires
Les ACL par défaut ne sont créées que sur les répertoires. Lorsque vous définissez des ACL par défaut sur des répertoires, tous les fichiers créés dans ce répertoire se verront également attribuer automatiquement cette FACL par défaut.
Pour créer une FACL par défaut sur un répertoire :
# setfacl -m default:u:john:rw /accounts
# getfacl accounts/ # file: accounts/ # owner: root # group: root user::rwx group::r-x other::r-x default:user::rwx default:user:john:rw- default:group::r-x default:mask::rwx default:other::r-x
Créez maintenant un nouveau fichier dans le répertoire des comptes et listez les FACL sur le fichier :
# touch /accounts/test # getfacl test # file: test # owner: root # group: root user::rw- user:john:rw- group::r-x #effective:r-- mask::rw- other::r--
Suppression des FACL
Pour supprimer FACL, utilisez la commande setfacl avec l'option -x :
# setfacl -x u:john /tmp/test
La commande ci-dessus supprime l'ACL pour l'utilisateur john sur le fichier /tmp/test. Les ACL des autres utilisateurs/groupes, le cas échéant, ne sont pas affectées.
Pour supprimer toutes les ACL associées à un fichier, utilisez l'option -b avec setfacl :
# setfacl -b /tmp/test
Sauvegarde des FACL
Plusieurs fois, le logiciel de sauvegarde peut ne pas copier les métadonnées liées à la FACL sur les fichiers. Dans ce cas, vous souhaiterez peut-être sauvegarder les informations FACL sur les fichiers. Désormais, la FACL de tous les fichiers d'un répertoire (y compris tous les sous-répertoires) peut être copiée dans un seul fichier.
# cd /accounts # getfacl -R * > accounts_facl ( -R -> recursive )
Restauration des FACL
Lorsque vous restaurez les fichiers dans le répertoire /accounts, vous devrez restaurer les FACL associées aux fichiers dans ce répertoire. Pour ce faire, utilisez le fichier de sauvegarde FACL accounts_facl avec le -restore choix :
# setfacl --restore=accounts_facl