Débutant

Maîtriser les ACL Linux avec getfacl et setfacl sans casser chmod

Apprenez à utiliser getfacl et setfacl pour accorder des droits Linux précis à plusieurs utilisateurs sans dérégler chmod.

Maîtriser les ACL Linux avec getfacl et setfacl sans casser chmod
Difficulté
Intermédiaire

Les ACL Linux servent à donner des droits précis à plusieurs utilisateurs ou groupes sur un même fichier ou répertoire, sans se limiter au trio propriétaire/groupe/autres. Avec getfacl pour lire et setfacl pour écrire, vous pouvez partager proprement un dossier sans casser votre modèle de permissions avec chmod.

Ce guide montre les commandes utiles, un exemple complet et le piège principal à surveiller : le masque ACL, qui peut restreindre des droits pourtant visibles dans l’ACL.

Prérequis

Il faut un système de fichiers et un montage qui prennent en charge les ACL, ainsi qu’un accès suffisant pour modifier les permissions du fichier ou du répertoire visé. Sur la plupart des distributions Linux actuelles, les ACL sont disponibles sur les systèmes de fichiers courants, mais ce point peut dépendre du montage et de l’environnement.

Les commandes ci-dessous supposent un shell POSIX classique et des privilèges adaptés. Si vous n’êtes pas propriétaire du fichier, utilisez un compte autorisé ou sudo si votre politique système le permet.

Matériel nécessaire

  • Un terminal Linux avec les commandes getfacl et setfacl installées
  • Un fichier ou un répertoire de test
  • Un ou plusieurs comptes utilisateurs ou groupes existants

Étapes

  1. Créer un dossier de test

    Commencez dans un répertoire de travail sûr pour éviter d’altérer des permissions utiles. Créez un dossier de test, puis vérifiez ses droits classiques.

    mkdir acl-demo
    ls -ld acl-demo
  2. Lire les permissions avec getfacl

    Affichez l’état initial avant toute modification. Cela permet de voir les droits Unix classiques et de vérifier ensuite exactement ce qui a changé.

    getfacl acl-demo

    La sortie montre notamment le propriétaire, le groupe, puis les entrées comme user::, group:: et other::. S’il existe déjà des ACL étendues, vous verrez aussi des lignes comme user:alice:rwx ou mask:rwx.

  3. Accorder un droit précis à un utilisateur

    Gros plan réaliste d’un ordinateur portable avec un terminal Linux affiché pendant l’attribution d’un droit précis à un utilisateur sur un dossier de test, avec une main sur le clavier.

    Ajoutez une ACL pour un utilisateur donné avec setfacl -m. Par exemple, donnez lecture et écriture à alice sur le dossier.

    setfacl -m u:alice:rwX acl-demo
    getfacl acl-demo

    La notation u:alice:rwX signifie utilisateur alice, avec lecture, écriture et exécution conditionnelle. Le X majuscule n’ajoute l’exécution que si la cible est un répertoire ou si un bit d’exécution existe déjà.

  4. Accorder un droit à un groupe sans toucher au groupe propriétaire

    Les ACL sont utiles quand plusieurs équipes doivent accéder au même répertoire sans changer le groupe Unix principal. Ajoutez une entrée de groupe ciblée.

    setfacl -m g:compta:rX acl-demo
    getfacl acl-demo

    Vous obtenez ainsi un partage plus fin qu’avec un simple chgrp suivi de chmod. Le groupe propriétaire du dossier reste inchangé, mais le groupe compta reçoit les droits indiqués.

  5. Vérifier le masque ACL avant de conclure

    Photo réaliste d’un écran avec un terminal Linux affichant la vérification détaillée des ACL d’un répertoire avant validation, dans un espace de travail minimal.

    Après l’ajout d’ACL, relisez la ligne mask: dans getfacl. Ce masque limite les droits effectifs des entrées nommées d’utilisateurs et de groupes, ainsi que du groupe propriétaire.

    getfacl acl-demo

    Si vous voyez user:alice:rwx mais mask:r--, alice n’aura pas effectivement rwx. Le droit apparent dans l’entrée n’est pas suffisant : le masque tranche au final.

  6. Ajuster le masque ACL si nécessaire

    Si le masque bloque les droits voulus, modifiez-le explicitement. Par exemple, pour autoriser lecture, écriture et traversée du répertoire :

    setfacl -m m:rwx acl-demo
    getfacl acl-demo

    Le masque n’accorde rien à lui seul à un utilisateur non mentionné. Il fixe seulement le plafond applicable à certaines entrées ACL déjà présentes.

  7. Définir des ACL par défaut sur un répertoire

    Photo réaliste d’un terminal Linux pendant la définition d’ACL par défaut sur un répertoire, avec les mains utilisant le clavier et la souris dans un cadre sobre.

    Pour qu’un dossier transmette automatiquement des ACL à ses nouveaux fichiers et sous-répertoires, définissez des ACL par défaut. C’est la bonne approche pour un répertoire de travail partagé.

    setfacl -m d:u:alice:rwX,d:g:compta:rX acl-demo
    getfacl acl-demo

    Les entrées commençant par default: s’appliquent à l’héritage dans ce répertoire. Elles n’agissent pas rétroactivement sur les fichiers déjà existants.

  8. Tester sur un exemple complet de dossier partagé

    Voici un cas simple : vous voulez qu’un dossier appartienne à bob, reste en groupe principal projet, mais soit modifiable par alice et lisible par le groupe compta. Appliquez les droits puis relisez l’ACL.

    mkdir partage
    chmod 770 partage
    setfacl -m u:alice:rwx,g:compta:rX,m:rwx partage
    setfacl -m d:u:alice:rwX,d:g:compta:rX,d:m:rwx partage
    getfacl partage

    Avec cette combinaison, vous gardez un socle clair en chmod 770 et vous ajoutez seulement les exceptions utiles via ACL. C’est précisément l’usage où les ACL évitent de “casser” une politique de droits existante.

  9. Supprimer une entrée ACL proprement

    Retirez une ACL devenue inutile avec setfacl -x. Par exemple, supprimez l’entrée de l’utilisateur alice, puis contrôlez le résultat.

    setfacl -x u:alice acl-demo
    getfacl acl-demo

    Pour enlever aussi une ACL par défaut, ciblez son entrée correspondante. Selon les besoins, vous pouvez supprimer une entrée précise ou nettoyer toutes les ACL étendues d’un coup.

  10. Nettoyer toutes les ACL étendues si besoin

    Si vous voulez conserver uniquement les droits Unix de base, supprimez les ACL étendues. Cela peut être utile pour repartir d’un état simple après des tests.

    setfacl -b acl-demo
    getfacl acl-demo

    L’option -b retire les entrées ACL étendues d’accès. Selon le cas, il peut aussi être nécessaire de retirer séparément des ACL par défaut encore présentes sur un répertoire.

Erreurs fréquentes & dépannage

Confondre ACL et chmod est l’erreur classique. chmod continue de définir les droits de base, mais il peut aussi affecter le masque ACL, donc changer les droits effectifs des entrées nommées.

Lire seulement la ligne user:alice sans regarder mask: mène souvent à un faux diagnostic. Vérifiez toujours l’ACL complète avec getfacl.

Oublier les ACL par défaut provoque des incohérences dans les dossiers partagés. Le répertoire parent semble bien réglé, mais les nouveaux fichiers n’héritent pas des accès attendus.

Appliquer des ACL trop larges complique l’administration. Mieux vaut partir d’un chmod simple et ajouter le minimum d’exceptions utiles.

Astuces & pour aller plus loin

Testez d’abord sur un dossier dédié, puis capturez l’état avant et après avec getfacl. Cette comparaison suffit souvent à comprendre un problème d’accès.

Utilisez rwX plutôt que rwx lorsque vous visez un répertoire contenant des fichiers ordinaires. Vous évitez d’ajouter un bit d’exécution inutile.

Documentez les ACL importantes sur les partages d’équipe. Les permissions Unix visibles via ls -l ne montrent pas à elles seules toute la réalité des accès.

Questions fréquentes

Quelle différence entre getfacl et setfacl ?

getfacl affiche les ACL et les permissions associées. setfacl sert à ajouter, modifier, supprimer ou définir des ACL par défaut.

Pourquoi ls -l ne me suffit-il pas pour diagnostiquer un accès ?

Parce que ls -l montre surtout les permissions Unix classiques. Les ACL étendues et leur masque se lisent bien plus clairement avec getfacl.

Est-ce que chmod peut casser mes ACL ?

Il ne supprime pas forcément les ACL, mais il peut modifier les droits de base et le masque ACL. Après un chmod, relisez toujours le résultat avec getfacl si vous dépendez d’ACL fines.

Les ACL par défaut modifient-elles les fichiers déjà présents ?

Non. Elles servent à l’héritage des nouveaux fichiers et sous-répertoires créés dans le répertoire concerné.

Conclusion

Pour partager un fichier ou un dossier entre plusieurs utilisateurs sans bricoler les groupes Unix ni multiplier les chmod, utilisez les ACL avec une méthode simple : lisez avec getfacl, modifiez avec setfacl, puis vérifiez toujours le mask. Si vous administrez un répertoire partagé, ajoutez aussi des ACL par défaut pour que les nouveaux fichiers héritent des bons accès.

Commentaires · Aucun commentaire pour l'instant

Soyez le premier à réagir.

Laisser un commentaire