[HowTo] Droits multiples et ACL sous Debian#
Aug 06, 2010
10 min read
Les droits de fichier Unix classiques ne nous permettent pas d’autoriser plusieurs groupes avec un accès en lecture/écriture et d’autres groupes (ou utilisateurs) avec un accès en lecture seule. Heureusement il existe les ACL (acces control list) c’est une liste composée de plusieurs règles en fonction de l’utilisateur, elle permet donc de palier à ce défaut. Installées par défauts sur certains systèmes, ces “Listes de contrôles d’accès” peuvent s’avérer très utiles lors d’un partage Samba par exemple.
Utilité et exemple#
Admettons un partage de fichiers samba dans une PME avec un dossier… Royalbacon, pour changer. Le patron doit avoir un controle total sur RoyalBacon Les commerciaux les droits de lecture et exécution Et les client uniquement un droit de lecture seule
Voilà un cas pratique ou nous allons devoir gérer les droits du dossier avec une liste de contrôle d’accès ou ACL.
Installation#
aptitude install acl
Activer le support des ACL au demarrage#
Afin qu’une partition Unix supporte les ACL il faut la monter avec l’option “ACL” Pour cela nous allons éditer le fichier fstab contenant les paramètres de montage des partitions au démarrage.
Commencez par repérer la partition à modifier, par exemple ” sdc2 ” chez moi. Pour vous y retrouver:
La première lettre correspond au type de disque dur “H” pour l’IDE et “S” pour les disques SCSI ou SATA.
La troisième au numéro du disque “a” pour le premier, “b” pour le deuxieme etc…
Et le numéro final correspond à celui de la partition sur le disque.
Ensuite éditez le fichier “fstab”
vi /etc/fstab
Et modifiez la ligne de votre partition pour y ajouter l’option “acl”: Chez moi:
/dev/sdc2 /storage/shared ext3 defaults,acl 0 2
ou pour que ce soit effectif dès maintenant, remontez la partition avec le paramètre “acl”:
mount -o remount,acl /dev/sdc2
Configurer les ACL pour un fichier ou un dossier#
Les commandes utilisées sont getfacl et setfacl
getfacl permet de lister les droits,
un peu comme un “ls -l” mais spécifique à un élément et plus poussé. Il s’utilise avec
la syntaxe suivante: getfacl nomdefichier .
Par exemple pour le fichier royalbacon.mcdo
:
getfacl royalbacon.mcdo setfacl sert, lui, à configurer une ACL sur un fichier (ou un dossier). la syntaxe est la suivante: setfacl -[m/b] type:nom:droits nomdufichier On peu la décomposer en 5 paramètres
-m sert à ajouter une règle et -b à supprimer les règles
type: o, g ou o pour user, group ou other
droits r, w et/ou x pour read, write et execute
nom: nom de l’utilisateur ou du groupe
Par exemple, pour ajouter les droits d’écriture à l’utilisateur epheo sur le fichier
royalbacon.mcdo
:
setfacl -m u:epheo:w royalbacon.mcdo
Pour supprimer l’ ACL du fichier royalbacon.mcdo:
setfacl -b royalbacon.mcdo
Remarques, autres paramètres et exemples concrets Le paramètre -R (pour la récursivité) fonctionne:
setfacl -b -R royalbacon.mcdo
Evidemment avec le parametre o (other) on ne specifie pas de nom d’utlisateur :) Par exemple pour donner les droits de lecture aux autres utilisateurs:
setfacl -m o::r royalbacon.mcdo
Une dernière remarque, lors d’un partage samba, Windows peut modifier les ACL graphiquement, avec l’explorer. (oui c’est étonnant je sais…)