Gestion des ACLs

Cette partie décrit le fonctionnement entre les ACLs Linux/Samba et les droits sous Windows.

RemarquePréambule

Par défaut Linux/Unix connaît trois type de permissions :

  • R : Lire (Read)
  • W : Écrire (Write)
  • X : Exécuter (eXecute)

Le droit d'exécution pour un dossier permet de rentrer dedans.

Le droit de lecture pour un dossier permet de lister son contenu.

Par défaut Linux/Unix considère trois type d'utilisateurs :

  • U : utilisateur (user)
  • G : groupe (group)
  • O : propriétaire (owner)

Les ACLs permettent de compléter ces permissions et de paramétrer des droits particulier pour un utilisateur ou un groupe.

Sur un module EOLE, les ACLs ne sont supportées que sur la partition /home.

Attention

Attention sur un dossier qui possède des ACLs, les droits Unix sont mal affichés par la commandes ls -l ou par l'alias ll, il faut utiliser la commande getfacl pour les afficher correctement et setfacl pour les modifier.

Seules les ACLs par défaut sont hérités, les droits Unix positionnés à 777 sur un dossier n'est pas hérité par les fichiers et dossiers qui seront créés dedans.

ExempleExemple d'un mauvais affichage des droits Unix

root@scribe:~# ls -ld /home/workgroups/commun/

drwxr-x---+ 5 root root 4096 févr. 12 11:35 /home/workgroups/commun/

D'après cette commande, les droit Unix sont 750, le signe + indique qu'il y a des ACLs.

Affichage des droits avec la commande getfacl

La commande getfacl liste les droits Unix, les ACLs et les ACLs par défaut :

root@scribe:~# getfacl /home/workgroups/commun/

getfacl : suppression du premier / des noms de chemins absolus

# file: home/workgroups/commun/

# owner: root

# group: root

user::rwx ← droit Unix 7

group::--- ← droit Unix 0 (juste avant la commande ls -ld affichait un 5 pour le groupe)

group:administratifs:r-x ← ACL

group:professeurs:r-x ← ACL

group:eleves:r-x ← ACL

mask::r-x

other::--- ← droit Unix 0

default:user::rwx

default:group::---

default:group:administratifs:r-x ← ACL par défaut

default:group:professeurs:r-x ← ACL par défaut

default:group:eleves:r-x ← ACL par défaut

default:mask::r-x

default:other::---

On voit que pour le groupe la commande ls -ld n'affiche pas les bons droits : 5 au lieu de 0.

Modifier des droits

Si on veut modifier des droits :

root@scribe:~# mkdir /home/workgroups/commun/toto

root@scribe:~# setfacl -Rm g:eleves:rwx /home/workgroups/commun/toto

Option de la commande setfacl :

  • -R pour être récursif
  • -m pour modifier
  • g: : indique qu'il s'agit d'un groupe, suivi du nom du groupe ou rien pour le groupe propriétaire
  • :rwx : lui donne les droits Read Write eXecute

root@scribe:~# getfacl /home/workgroups/commun/toto/|grep eleves

group:eleves:rwx

default:group:eleves:r-x

La même commande mais pour les ACLs par défaut (celles qui seront héritées par le contenu) :

root@scribe:~# setfacl -Rdm g:eleves:rwx /home/workgroups/commun/toto

  • -d pour indiquer que l'on modifie les ACLs par défaut

root@scribe:~# getfacl /home/workgroups/commun/toto/|grep eleves

group:eleves:rwx

default:group:eleves:rwx

Attention

Seuls les dossiers possèdent des ACLs par défaut, pour l'héritage. Les fichiers n'en ont donc pas.

Truc & astuce

Pour plus d'information il faut se reporter à la page de manuel de la commande :

# man getfacl

ou

# man setfacl

Le plus simple est de gérer les ACLs depuis Windows, pour cela faire un clic droit sur un fichier ou sur un dossier et cliquer sur l'action Propriétés.

On obtient la fenêtre de propriétés du fichier ou du dossier sélectionné, pour modifier les autorisations il faut se rendre dans l'onglet Sécurité, choisir le nom de groupes ou d'utilisateurs, puis cliquer sur le bouton Avancé.

Dans l'onglet Autorisations, cliquer sur l'entrée désirée puis cliquer sur le bouton Modifier les autorisations….

Parmi les modifications des autorisations il est possible d'ajouter, de modifier ou de supprimer. Cliquer sur le bouton Ajouter….

Entrer un nom d'utilisateur ou le nom d'un groupe et cliquer sur le bouton Vérifier les noms.

Valider avec le bouton OK.

Cocher les autorisations désirées et valider avec le bouton OK.

Il faut par contre garder à l'esprit que côté serveur on n'a que 3 droits : Read Write et eXecute.

Seules les 3 premières cases à cocher proposées avec cette méthode sont supportées par le serveur Scribe. Les autres ne fonctionnent pas. Les droits sur les autres lignes vont se placer automatiquement.