Apprendre la commande Linux ‘setfacl’
L’utilitaire Setfacl définit des listes de contrôle d’accès (ACL) pour les fichiers et les répertoires. En ligne de commande, une séquence de commandes est suivie d’une séquence de fichiers (une séquence de fichiers peut être suivie d’une autre séquence de commandes, etc.).
- Choix -m, et -X Attendez-vous à une ACL sur la ligne de commande. Plusieurs entrées ACL sont séparées par des virgules (`,’).Choix -M, et -X Lire les ACL à partir d’un fichier ou d’une entrée standard. Le format d’entrée ACL est décrit dans la section ENTRÉES ACL.
- Ce – mettre et –fichier de configuration options Définissez l’ACL d’un fichier ou d’un répertoire. L’ACL précédente est remplacée. L’entrée ACL pour cette action doit contenir des autorisations.
- Ce -m (–modifier) et -M (–modifier le fichier) options Modifier l’ACL d’un fichier ou d’un répertoire. L’entrée ACL pour cette action doit contenir des autorisations.
- Ce -x (–supprimer) et -X (–supprimer le fichier) option pour supprimer une entrée ACL.seule l’entrée ACL n’a pas permanente Les champs sont acceptés comme paramètres sauf si POSIXLY_CORRECT est défini.
lors de l’utilisation -M, et -X option, setfacl accepte la sortie produite par getfacl. Il y a au plus une entrée ACL par ligne. Après le signe dièse (« # »), tout jusqu’à la fin de la ligne est considéré comme un commentaire.
Si setfacl est utilisé sur un système de fichiers qui ne prend pas en charge les ACL, setfacl fonctionne sur les bits d’autorisation du mode fichier. Si l’ACL ne correspond pas exactement aux bits d’autorisation, setfacl modifie les bits d’autorisation du mode fichier pour refléter l’ACL aussi fidèlement que possible, écrit un message d’erreur sur l’erreur standard et renvoie un état de sortie supérieur à 0.
Utiliser Setfacl
Tout d’abord, essayez de configurer une liste de base de dossiers dans votre répertoire personnel. Puisque vous essayez ceci pour la première fois, créez-en un nouveau avec lequel jouer. De cette façon, vous ne risquez pas de vous enfermer dans des fichiers importants.
mkdir ~/acl-test
Ensuite, utilisez setfacl pour accorder à un autre utilisateur du système l’accès au dossier. Utilisation de la configuration -m Indicateur pour modifier la liste de contrôle d’accès du fichier. Cela signifie généralement l’ajout d’utilisateurs ou de groupes.
setfacl -mu:nom d’utilisateur:rwx ~/acl-test/
Ce toi avant que le premier deux-points indique à la commande dont vous parlez le nom d’utilisateur.Ce rwx après la deuxième subvention rdiriger, wcérémonie et eXexécuter l’autorisation.
Il en va de même pour les groupes en précisant g remplacer toi avant le premier côlon.
setfacl -mg:nomgroupe:rwx ~/acl-test/
Il fonctionne de la même manière que l’exemple précédent, sauf qu’il accorde des autorisations à l’ensemble du groupe.
Ce -X Les drapeaux font le contraire -mIl révoquera l’accès à l’utilisateur ou au groupe spécifié.
setfacl -xu:nom d’utilisateur:w ~/acl-test/
Cette commande révoque l’accès en écriture de l’utilisateur au répertoire.
Vous pouvez également modifier directement les autorisations de tous les utilisateurs actuels. Cela inclut le propriétaire du fichier et tous les autres utilisateurs auxquels des autorisations ont été accordées. Il s’agit d’un raccourci qui utilise la commande existante mais omet le nom d’utilisateur.
setfacl -mu::rx ~/acl-test/
Cela accorde des autorisations de lecture et d’exécution à tous les utilisateurs existants, mais supprime les autorisations d’écriture.
S’applique également à -X Marquer et supprimer les autorisations.
setfacl -xu ::w ~/acl-test/
C’est fondamentalement le même que l’exemple précédent, à l’envers.
setfacl vous permet également de copier des listes de contrôle d’accès d’un fichier à un autre. Assurez-vous que votre utilisateur dispose d’un accès complet au dossier de test et créez deux nouveaux fichiers à utiliser.
appuyez sur ~/acl-test/fichier{1,2}.txt
Maintenant, modifiez les permissions du premier fichier.
setfacl -mu:nom d’utilisateur:rx ~/acl-text/file1.txt
Vous pouvez maintenant diriger les résultats de getfacl (la commande utilisée pour récupérer les informations ACL actuelles) vers setfacl.
getfacl ~/acl-test/file1.txt | setfacl –set-file=- ~/acl-text/file2.txt
Le deuxième remplissage aura les mêmes permissions que le premier.
Enfin, vous pouvez supprimer toutes les entrées ACL étendues créées par la commande. Ainsi, le fichier conservera les autorisations d’utilisateur et de groupe qu’il avait à l’origine. Pour ce faire, utilisez l’indicateur -b.
setfacl -b ~/acl-test/
Ce sont les utilisations les plus courantes de setfacl. La section suivante de ce guide est une ventilation technique complète de la commande si vous souhaitez approfondir.
Analyse technique de Setfacl
définir la méthode [-bkndRLPvh] [{-m|-x} acl_spec] [{-M|-X} acl_file] document…
définir la méthode –restore=fichier
autorisation
Les propriétaires de fichiers et les processus dotés de la capacité CAP_FOWNER se voient accorder le droit de modifier l’ACL du fichier. Ceci est similaire aux autorisations requises pour accéder aux schémas de fichiers. (Sur les systèmes Linux actuels, root est le seul utilisateur disposant de la capacité CAP_FOWNER.)
Choix
-b, –remove-all
- Supprimez toutes les entrées ACL étendues. Conservez les entrées ACL de base pour le propriétaire, le groupe et les autres.
-k, –remove-default
- Supprimez l’ACL par défaut. Si aucune ACL par défaut n’existe, aucun avertissement ne sera émis.
-n, –pas de masque
- Ne recalculez pas les masques d’autorisation effectifs. Le comportement par défaut de setfacl est de recalculer l’entrée de masque ACL à moins qu’une entrée de masque ne soit explicitement donnée. Une entrée de masque est définie sur l’union de toutes les autorisations du groupe propriétaire et de toutes les entrées d’utilisateur et de groupe nommés. (Ce sont exactement les entrées affectées par l’entrée de masque).
– masquer
- Le masque d’autorisation effectif est recalculé même si l’entrée de masque ACL est explicitement donnée. (Voir -n options. )
-d, –default
- Toutes les opérations s’appliquent à l’ACL par défaut. Les entrées ACL normales du jeu d’entrées sont promues en entrées ACL par défaut. Les entrées ACL par défaut dans le jeu d’entrées sont ignorées. (avertissement si cela se produit).
–restore=fichier
- Restaurez une sauvegarde des autorisations créée par `getfacl -R’ ou une commande similaire. Utilisez ce mécanisme pour restaurer toutes les autorisations sur une sous-arborescence de répertoire complète. Si l’entrée contient des commentaires de propriétaire ou des commentaires de groupe et que setfacl est exécuté par root, le propriétaire et le groupe de tous les fichiers seront également restaurés. Cette option ne peut pas être mélangée avec des options autres que `–test’.
– test
- mode d’essai. Ne modifie pas les ACL des fichiers, mais répertorie les ACL générées.
-R, –récursif
- Applique les opérations de manière récursive à tous les fichiers et répertoires. Cette option ne peut pas être mélangée avec `–restore’.
-L, –logique
- Marche logique, suivez les liens symboliques. Le comportement par défaut est de suivre les paramètres de lien symbolique et d’ignorer les liens symboliques rencontrés dans les sous-répertoires. Cette option ne peut pas être mélangée avec `–restore’.
-P, –physique
- Marche physique, ignorez tous les liens symboliques. Cela ignore également le paramètre de lien symbolique. Cette option ne peut pas être mélangée avec `–restore’.
– Version
- Imprimez la version de setfacl et quittez.
– aider
- Imprimer l’aide expliquant les options de la ligne de commande.
Fin des options de la ligne de commande. Tous les arguments restants sont interprétés comme des noms de fichiers, même s’ils commencent par un tiret.
Si l’argument du nom de fichier est un tiret, setfacl lit une liste de fichiers à partir de l’entrée standard.
Entrée LCA
L’utilitaire setfacl reconnaît les formats d’entrée ACL suivants :
[d[efault]:] [u[ser]:]uid [:perms]
- Spécifie les autorisations de l’utilisateur.autorisations du propriétaire du fichier, si uid est vide.
[d[efault]:]G[roup]:Gide [:perms]
- Autorisations pour le groupe nommé.a des autorisations pour le groupe, si Gide est vide.
[d[efault]:]Mètre[ask][:] [:perms]
[d[efault]:]o[ther][:] [:perms]
Les espaces entre les délimiteurs et les non-délimiteurs sont ignorés.
Les entrées ACL correctes, y compris les autorisations, sont utilisées pour les opérations de modification et de définition. (choix -m, -M, – mettre et –fichier de configuration).entrée sans permanente champ est utilisé pour effacer Nombre d’entrées (options -X et -X).
pour uid et Gide Vous pouvez spécifier un nom ou un numéro.
Ce permanente Un champ est une combinaison de caractères qui indique l’autorisation : lire (r)Écrire (w)mettre en œuvre (X)Exécuter uniquement si le fichier est un répertoire ou dispose d’une autorisation d’exécution pour un utilisateur(X). ou, permanente Les champs peuvent être des nombres octaux (0-7).
entrée créée automatiquement
Initialement, les fichiers et les répertoires ne contiennent que les trois entrées ACL de base pour le propriétaire, le groupe et les autres. Pour qu’une ACL soit valide, certaines règles doivent être respectées :
- Ces trois entrées de base ne peuvent pas être supprimées. Il doit y avoir exactement une entrée pour chacun de ces types d’entrée de base.
- Tant que l’ACL contient des entrées d’utilisateurs nommés ou des objets de groupe nommés, elle doit également contenir un masque d’autorisation valide.
- Tant que l’ACL contient des entrées d’ACL par défaut, les trois entrées de base d’ACL par défaut (propriétaire par défaut, groupe par défaut et autre par défaut) doivent également exister.
- Chaque fois que l’ACL par défaut contient des entrées d’utilisateur nommé ou des objets de groupe nommé, elle doit également contenir le masque d’autorisation effectif par défaut.
Pour aider les utilisateurs à garantir ces règles, setfacl crée des entrées à partir d’entrées existantes dans les conditions suivantes :
- Si l’ACL contient une entrée d’utilisateur nommé ou de groupe nommé et qu’aucune entrée de masque n’existe, créez une entrée de masque avec les mêmes autorisations que l’entrée de groupe.à moins que -n Étant donné les options, ajustez davantage les autorisations de l’entrée de masque pour inclure l’union de toutes les autorisations affectées par l’entrée de masque. (Voir -n descriptif des options).
- Si une entrée ACL par défaut est créée et que l’ACL par défaut ne contient pas de propriétaire, de groupe propriétaire ou d’autres entrées, une copie du propriétaire ACL, du groupe propriétaire ou d’autres entrées est ajoutée à l’ACL par défaut.
- Si l’ACL par défaut contient une entrée d’utilisateur nommé ou une entrée de groupe nommé et qu’aucune entrée de masque n’existe, ajoutez une entrée de masque avec les mêmes autorisations que l’entrée de groupe de l’ACL par défaut.à moins que -n Étant donné les options, ajustez davantage les autorisations de l’entrée de masque pour inclure l’union de toutes les autorisations affectées par l’entrée de masque. (Voir -ndescriptif des options).
Exemple
- Accorder aux autres utilisateurs un accès en lecture
- setfacl -mu:lisa:r fichier
- Révoquer l’accès en écriture pour tous les groupes et tous les utilisateurs nommés (à l’aide d’un masque d’autorisation efficace)
- setfacl -mm::fichier rx
- Supprimer une entrée de groupe nommé de l’ACL d’un fichier
- setfacl -xg:fichier employé
- Copier l’ACL d’un fichier à un autre
- getfacl fichier1 | setfacl –set-file=- fichier2
- Copiez l’ACL d’accès dans l’ACL par défaut
- getfacl -a répertoire | setfacl -d -M- répertoire
Conforme au projet de norme Posix 1003.1e 17
Si la variable d’environnement POSIXLY_CORRECT est définie, le comportement par défaut de setfacl est modifié comme suit : toutes les options non standard sont désactivées. Le préfixe « default: » est désactivé.Ce -X et -X options accepte également les champs d’autorisation (et les ignore).
Merci de nous en informer!
Dites-nous pourquoi !
D’autres détails ne sont pas assez difficiles à comprendre