<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://lea-linux.org/docs/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=FuraX</id>
	<title>Lea Linux - Contributions [fr]</title>
	<link rel="self" type="application/atom+xml" href="https://lea-linux.org/docs/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=FuraX"/>
	<link rel="alternate" type="text/html" href="https://lea-linux.org/documentations/Sp%C3%A9cial:Contributions/FuraX"/>
	<updated>2026-04-28T08:34:22Z</updated>
	<subtitle>Contributions</subtitle>
	<generator>MediaWiki 1.40.1</generator>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Gestion_des_ACL&amp;diff=10430</id>
		<title>Gestion des ACL</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Gestion_des_ACL&amp;diff=10430"/>
		<updated>2005-11-07T12:38:01Z</updated>

		<summary type="html">&lt;p&gt;FuraX : ajout de l&amp;#039;option --skip-base pour ne pas sauvegarder les droits std unix&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Catégorie:Administration_système]]&lt;br /&gt;
&lt;br /&gt;
Une &#039;&#039;&#039;ACL&#039;&#039;&#039;, ou &#039;&#039;Access Control List&#039;&#039; (en anglais : Â« liste de contrôle d&#039;accès Â») est, pour définir simplement la notion, une liste de [[Admin-admin env-permissions|permission]]s sur un fichier, un répertoire ou une arborescence, ajoutée aux permissions Â« classiques Â» (c&#039;est-à-dire, techniquement, les permissions POSIX.1) de ce fichier. Ces permissions concernent des utilisateurs et/ou des groupes définis. La gestion des ACL sous GNU/Linux s&#039;inspire de la norme POSIX 1003.1e (projet 17) mais ne la respecte pas entièrement.&lt;br /&gt;
&lt;br /&gt;
Au moyen des ACL, on peut étendre le nombre d&#039;utilisateurs et de groupes ayant des droits sur un même fichier. Rappelons que, dans le monde UNIX, chaque fichier ne peut normalement indiquer des permissions que pour &#039;&#039;un seul utilisateur&#039;&#039; et &#039;&#039;un seul groupe&#039;&#039;, qui s&#039;opposent à une unique catégorie correspondant à Â« tous les autres Â» (ou Â« le reste du monde Â»). Avec les ACL, on peut (entre autres) ajouter à un fichier d&#039;autres utilisateurs et groupes et définir leurs droits séparément. On se rapproche ainsi du système de permissions pratiqué sur les plate-formes NT (de nombreuses différences subsistent, cependant).&lt;br /&gt;
&lt;br /&gt;
Les ACL sont très utiles (voire indispensables) dans des environnements informatiques axés sur le travail collaboratif et mutualisé ; de même, leur utilisation avec [[Reseau-partfic-samba|SAMBA]] permet d&#039;en étendre les capacités.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cadre type=&amp;quot;note&amp;quot;&amp;gt;Dans les exemples qui suivent, les commandes peuvent être tapées en root ou en utilisateur normal, selon la portée des modificaitons : pour modifier les droits d&#039;un fichier qui n&#039;est pas possédé par un utilisateur ou pour ajouter des permissions à un autre utilisateur ou encore pour ajouter aux ACL un groupe dont l&#039;utilisateur ne fait pas partie, il faut être root (pour les utilisateurs Ubuntu, il faut préfixer les commandes par [[sudo|&amp;lt;code&amp;gt;sudo&amp;lt;/code&amp;gt;]]).&amp;lt;/cadre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Exemple pratique==&lt;br /&gt;
Soit un fichier &#039;&#039;/var/www/index.php&#039;&#039; (page d&#039;index d&#039;un site web, par exemple) dont les droits sont les suivants :&lt;br /&gt;
&amp;lt;code&amp;gt;ls -l /var/www/index.php&lt;br /&gt;
   -rw-r-----  1 root www-data 18 2005-09-11 11:24 /var/www/index.php&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En d&#039;autres termes, root en est le propriétaire ; il peut le lire et le modifier ; le fichier est aussi accordé au groupe &#039;&#039;www-data&#039;&#039; (celui sous lequel, par exemple, tourne le [[Reseau-web-Apache PHP MySQL|serveur web]]), dont les membres peuvent le lire mais pas le modifier. Quant au reste du monde, il ne peut pas y accéder (le fichier contient des informations confidentielles telles qu&#039;un mot de passe à une base de données [[Reseau-web-Apache PHP MySQL|MySQL]]).&lt;br /&gt;
&lt;br /&gt;
Imaginons qu&#039;on veuille rendre le fichier accessible en lecture aux utilisateurs jean et luce, en lecture et écriture à khadija et alice. On pourrait à la rigueur faire entrer jean et luce dans le groupe &#039;&#039;www-data&#039;&#039; mais cela introduirait une faille de sécurité car &#039;&#039;www-data&#039;&#039; peut aussi accéder à des données qui ne les concernent pas. Il n&#039;est en tout cas rationnellement pas prudent d&#039;ajouter khadija et alice au groupe &#039;&#039;root&#039;&#039;. On ne peut non plus changer les permissions (les mettre en lecture et écriture pour tout le monde) ou modifier le propriétaire et le groupe.&lt;br /&gt;
&lt;br /&gt;
Les ACL sont là une solution pratique et facile à gérer dans ce cas ; il suffit d&#039;ajouter des permissions à l&#039;ACL du fichier (grâce à des commandes décrites plus bas) pour qu&#039;il se présente ainsi :  &lt;br /&gt;
&amp;lt;code&amp;gt;root: rw-&lt;br /&gt;
www-data: r--&lt;br /&gt;
khadija: rw-&lt;br /&gt;
alice: rw-&lt;br /&gt;
jean: r--&lt;br /&gt;
luce: r--&lt;br /&gt;
reste du monde : ---&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Mise en place==&lt;br /&gt;
Selon la version du noyau utilisée, le support des ACL peut ou non être déjà compilé. S&#039;il l&#039;est, il faut aussi que la partition contenant les fichiers dont on veut étendre les droits soit montée avec l&#039;option idoine.&lt;br /&gt;
&lt;br /&gt;
===Noyau===&lt;br /&gt;
Il faut d&#039;abord savoir si le noyau a été compilé avec le support des ACL. Le plus simple est de le vérifier dans le fichier de configuration du noyau, fichier normalement situé sous &#039;&#039;/boot&#039;&#039;. Pour ce faire, utiliser la [[Admin-admin env-shell|commande &amp;lt;i&amp;gt;grep&amp;lt;/i&amp;gt;]] : &lt;br /&gt;
&amp;lt;code&amp;gt;grep ACL /boot/config-version-du-noyau&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Elle doit renvoyer la ligne suivante : &lt;br /&gt;
&amp;lt;code&amp;gt;CONFIG_FS_POSIX_ACL=y&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
pour signaler que le support général des ACL est présent, et plusieurs lignes du type&lt;br /&gt;
&amp;lt;code&amp;gt;CONFIG_SystèmeDeFichiers]_FS_POSIX_ACL=y&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
où &#039;&#039;[[système de fichiers|SystèmeDeFichiers]]&#039;&#039; peut recevoir les valeurs (pour un noyau 2.6.8-2-386 à la date de rédaction) &#039;&#039;EXT2&#039;&#039;, &#039;&#039;EXT3&#039;&#039;, &#039;&#039;JFS&#039;&#039; et &#039;&#039;XFS&#039;&#039;. On peut aussi utiliser les ACL avec les systèmes de fichiers &#039;&#039;IBM JFS&#039;&#039;, &#039;&#039;ReiserFS&#039;&#039;, &#039;&#039;SGI XFS&#039;&#039; et &#039;&#039;NFS&#039;&#039;. Leur implémentation peut nécessiter de patcher le noyau. Noter que les ACL ne sont pas possibles avec des systèmes de fichiers comme &#039;&#039;vfat&#039;&#039; qui ne gèrent aucun type de permissions.&lt;br /&gt;
&lt;br /&gt;
Si la valeur des options n&#039;est pas correcte, vous devez [[Rubrique : noyau et modules|recompiler votre noyau]]. N&#039;oubliez pas de prévoir au moins un système de fichiers pour lequel les ACL seront permis.&lt;br /&gt;
&lt;br /&gt;
===Systèmes de fichiers/montage des partitions===&lt;br /&gt;
Quand le noyau est disposé à gérer les ACL, on doit préparer les partitions montées dans un système de fichiers adapté (par exemple, il est exclu de vouloir utiliser ces permissions avec du &#039;&#039;vfat&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
====Montage et démontage à la volée====&lt;br /&gt;
Il faut monter les partitions voulues avec l&#039;option &#039;&#039;acl&#039;&#039;. Par exemple : &lt;br /&gt;
&amp;lt;code&amp;gt;mount -t ext3 -o defaults,acl /dev/hda2/ /var/www/&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Si la partition est déjà montée, on peut modifier ses paramètres à la volée : &lt;br /&gt;
&amp;lt;code&amp;gt;mount -o remount,acl /var/www/&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Configuration automatique====&lt;br /&gt;
L&#039;inscription dans &#039;&#039;[[Admin-admin fs-fstab|/etc/fstab]]&#039;&#039; des options de gestion des ACL est recommandée quand leur utilisation est régulière. Par exemple, notre même couple &#039;&#039;partition&#039;&#039; / &#039;&#039;point de montage&#039;&#039; serait déclaré ainsi : &lt;br /&gt;
&amp;lt;code&amp;gt;/dev/hda2       /var/www               ext3    defaults,acl 0       0&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
À chaque montage automatique des partitions, le support des ACL sera activé.&lt;br /&gt;
&lt;br /&gt;
==Commandes==&lt;br /&gt;
Il existe deux commandes essentielles : l&#039;une pour manipuler l&#039;ACL d&#039;un fichier (&#039;&#039;setfacl&#039;&#039;) et l&#039;autre pour la consulter (&#039;&#039;getfacl&#039;&#039;). Les commandes traditionnelles &#039;&#039;chmod&#039;&#039; et &#039;&#039;chown&#039;&#039; ne peuvent accéder aux ACL. &lt;br /&gt;
&lt;br /&gt;
Ces deux commandes nécessitent, sous Debian (et distributions dérivées, comme Knoppix ou Ubuntu), l&#039;installation du paquetage « acl ». Pour l&#039;installer : &lt;br /&gt;
&amp;lt;code&amp;gt;[sudo] apt-get install acl&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
(ajout de &amp;lt;code&amp;gt;sudo&amp;lt;/code&amp;gt; pour Ubuntu)&lt;br /&gt;
&lt;br /&gt;
Pour les distributions à base de RedHat (donc aussi Fedora, Mandriva), il faut installer les paquetages &amp;lt;code&amp;gt;acl.*.rpm&amp;lt;/code&amp;gt; et &amp;lt;code&amp;gt;libacl1.*.rpm&amp;lt;/code&amp;gt; (leur nom contient leur numéro de version).&lt;br /&gt;
&lt;br /&gt;
===setfacl===&lt;br /&gt;
Le nom de la commande se comprend &#039;&#039;set file&#039;s ACL&#039;&#039; (« régler l&#039;ACL du fichier »). Elle possède de nombreuses options dont il convient de prendre connaissance en consultant la page de manuel (&amp;lt;code&amp;gt;man setfacl&amp;lt;/code&amp;gt;). La commande fonctionne bien sûr aussi de manière récursive (option &amp;lt;code&amp;gt;-R&amp;lt;/code&amp;gt;) :&lt;br /&gt;
&amp;lt;code&amp;gt;setfacl -Rm u:khadija:rw /var/www/&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
modifie l&#039;ACL de tous les fichiers situés sous &#039;&#039;/var/www/&#039;&#039; en attribuant une permission de lecture et d&#039;écriture à l&#039;utilisateur khadija.&lt;br /&gt;
&lt;br /&gt;
====Ajouter des permissions====&lt;br /&gt;
La syntaxe fondamentale est simple. La commande&lt;br /&gt;
&amp;lt;code&amp;gt;setfacl -m u:khadija:rw /var/www/index.php&amp;lt;/code&amp;gt; &lt;br /&gt;
modifiera (&amp;lt;code&amp;gt;-m&amp;lt;/code&amp;gt;) l&#039;ACL de &#039;&#039;/var/www/index.php&#039;&#039; en attribuant à l&#039;utilisateur (préfixe &amp;lt;code&amp;gt;u:&amp;lt;/code&amp;gt;) khadija les droits &amp;lt;code&amp;gt;rw&amp;lt;/code&amp;gt; et en lui refusant le droit d&#039;exécution (qui n&#039;a pas été mentionné dans la commande).&lt;br /&gt;
&lt;br /&gt;
Les principaux paramètres à connaître sont : &lt;br /&gt;
* &#039;&#039;&#039;préfixes :&#039;&#039;&#039; &lt;br /&gt;
** &amp;lt;code&amp;gt;u:&amp;lt;/code&amp;gt; (droits pour un &#039;&#039;&#039;u&#039;&#039;&#039;tilisateur, nommé ou désigné par son uid) ;&lt;br /&gt;
** &amp;lt;code&amp;gt;g:&amp;lt;/code&amp;gt; (droits pour un &#039;&#039;&#039;g&#039;&#039;&#039;roupe, nommé ou désigné par son gid) ;&lt;br /&gt;
** &amp;lt;code&amp;gt;o:&amp;lt;/code&amp;gt; (droits pour &#039;&#039;&#039;&#039;&#039;o&#039;&#039;&#039;ther&#039;&#039;, le reste du monde) ; &lt;br /&gt;
* &#039;&#039;&#039;permissions :&#039;&#039;&#039; elles sont codées dans l&#039;ordre &amp;lt;code&amp;gt;r&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;w&amp;lt;/code&amp;gt; et &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; ou &amp;lt;code&amp;gt;X&amp;lt;/code&amp;gt; (ce dernier représentant, comme avec &#039;&#039;chmod&#039;&#039;, le droit d&#039;entrée dans les répertoires ou celui d&#039;exécution pour les fichiers qui ont déjà un marqueur &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt;). On les remplace par &amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt; pour une interdiction explicite. Ne pas mentionner un droit revient aussi à une interdiction : &amp;lt;code&amp;gt;setfacl -m u:khadija:w /var/www/index.php&amp;lt;/code&amp;gt; et &amp;lt;code&amp;gt;setfacl -m u:khadija:-w- /var/www/index.php&amp;lt;/code&amp;gt; reviennent au même.&lt;br /&gt;
&lt;br /&gt;
On peut construire des commandes plus complexes en enchaînant les entrées dans l&#039;ACL : &lt;br /&gt;
&amp;lt;code&amp;gt;setfacl -m u:khadija:rw,g:site1:r--,o:--- /var/www/index.php&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
définit des permissions dans l&#039;ACL de &#039;&#039;/var/www/index.php&#039;&#039; pour l&#039;utilisateur khadija, le groupe &#039;&#039;site1&#039;&#039; et le reste du monde.&lt;br /&gt;
&lt;br /&gt;
Cette commande permet aussi de modifier les permissions classiques (et remplace dans ce cas &#039;&#039;chmod&#039;&#039;) : l&#039;utilisateur, le groupe et le reste du monde initiaux du fichier sont simplement désignés par le préfixe (&amp;lt;code&amp;gt;u:&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;g:&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;o:&amp;lt;/code&amp;gt;) suivi d&#039;un nom vide : si un fichier &#039;&#039;index.php&#039;&#039; appartient à luce:&#039;&#039;www-data&#039;&#039; avec les droits &amp;lt;code&amp;gt;r--r-----&amp;lt;/code&amp;gt;, pour donner à l&#039;utilisateur et le groupe les droits en lecture et écriture il suffit d&#039;une commande &amp;lt;code&amp;gt;setfacl -m u::rw,g::rw /var/www/index.php&amp;lt;/code&amp;gt;. Si l&#039;utilisateur et le groupe possèdent déjà un droit qui ne serait pas mentionné dans la commande &#039;&#039;setfacl&#039;&#039;, ce droit sera annulé. Soit le fichier &#039;&#039;index.php&#039;&#039; avec les droits &amp;lt;code&amp;gt;rw-r-----&amp;lt;/code&amp;gt; pour luce:&#039;&#039;www-data&#039;&#039;. La commande &amp;lt;code&amp;gt;setfacl -m u::r,g::x index.php&amp;lt;/code&amp;gt; modifiera les droits à &amp;lt;code&amp;gt;r----x---&amp;lt;/code&amp;gt; pour pour luce:&#039;&#039;www-data&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Noter qu&#039;un fichier dont seules les permissions classiques ont été altérées par &#039;&#039;setfacl&#039;&#039; au lieu de &#039;&#039;chmod&#039;&#039; ne reçoit pas pour autant une ACL. De fait, il n&#039;est pas référencé par &amp;lt;code&amp;gt;ls -l&amp;lt;/code&amp;gt; comme fichier à ACL (marqueur &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; ; voir plus bas).&lt;br /&gt;
&lt;br /&gt;
====Droits par défaut et héritage des droits étendus====&lt;br /&gt;
Les droits étendus d&#039;un objet parent ne sont pas automatiquement hérités par les objets contenus. Par exemple, si un répertoire (root:&#039;&#039;www-data&#039;&#039;, &amp;lt;code&amp;gt;rwxr-x-r-x&amp;lt;/code&amp;gt;) possède une ACL &amp;lt;code&amp;gt;u:luce:rwx&amp;lt;/code&amp;gt;, un fichier créé à l&#039;intérieur (ou déjà présent avant l&#039;adjonction de l&#039;ACL) ne reçoit pas cette ACL et ses droits sont ceux impliqués par l&#039;&amp;lt;i&amp;gt;[[fstab|umask]]&amp;lt;/i&amp;gt; défini.&lt;br /&gt;
&lt;br /&gt;
On peut modifier ce comportement en ajoutant, &#039;&#039;&#039;aux répertoires seulement&#039;&#039;&#039;, un attribut &#039;&#039;default&#039;&#039;, codé &amp;lt;code&amp;gt;d:&amp;lt;/code&amp;gt;, qui se transmet à tous les fichiers créés dans le répertoire après l&#039;ajout de l&#039;ACL par défaut. Par exemple, &amp;lt;code&amp;gt;setfacl -m d:u:luce:rwX /var/www&amp;lt;/code&amp;gt; donne à luce les droits de lecture et écriture (ainsi qu&#039;« exécution » quand il s&#039;agit de répertoires) pour tous les fichiers qui seront créés sous &#039;&#039;/var/www&#039;&#039; à partir de ce moment, jusqu&#039;à ce que cette ACL « par défaut » soit annulé ou remplacé.&lt;br /&gt;
&lt;br /&gt;
====Retirer des permissions====&lt;br /&gt;
Pour annuler tout ou partie d&#039;une ACL : &lt;br /&gt;
&amp;lt;code&amp;gt;setfacl -b /var/www/index.php&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
ôte tout le contenu de l&#039;ACL du fichier, tandis que&lt;br /&gt;
&amp;lt;code&amp;gt;setfacl -x u:khadija,g:site1 /var/www/index.php&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
retire les permissions propres à khadija et au groupe &#039;&#039;site1&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Les permissions ACL par défaut d&#039;un répertoire (&amp;lt;code&amp;gt;d:&amp;lt;/code&amp;gt;) s&#039;annulent par &amp;lt;code&amp;gt;setfacl -k&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
====Le masque====&lt;br /&gt;
Le masque est une synthèse des valeurs les plus permissives que possède un fichier doté d&#039;une ACL. Les droits de l&#039;utilisateur fondamental ne sont cependant pas pris en compte. Le masque est calculé automatiquement : &lt;br /&gt;
&amp;lt;code&amp;gt;chown luce:www-data index.php &lt;br /&gt;
chmod 640 index.php&lt;br /&gt;
ls -l index.php&lt;br /&gt;
    -rw-r-----  1 luce www-data 5055 2005-10-16 18:53 index.php&lt;br /&gt;
getfacl index.php&lt;br /&gt;
    # file: index.php&lt;br /&gt;
    # owner: luce&lt;br /&gt;
    # group: www-data&lt;br /&gt;
    user::rw-&lt;br /&gt;
    group::r--&lt;br /&gt;
    other::---&amp;lt;/code&amp;gt;&lt;br /&gt;
Ce fichier n&#039;a pas d&#039;ACL donc pas de masque.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;setfacl -m u:jean:rw,g:web:rw index.php&lt;br /&gt;
getfacl index.php&lt;br /&gt;
    # file: index.php&lt;br /&gt;
    # owner: luce&lt;br /&gt;
    # group: www-data&lt;br /&gt;
    user::rw-&lt;br /&gt;
    user:jean:rw-&lt;br /&gt;
    group::r--&lt;br /&gt;
    group:web:rw-&lt;br /&gt;
    mask::rw-&lt;br /&gt;
    other::---&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Maintenant que le fichier possède une ACL, il a reçu un masque : les permissions les plus élevées (utilisateur exclu) étant &amp;lt;code&amp;gt;rw&amp;lt;/code&amp;gt;, c&#039;est aussi la valeur du masque.&lt;br /&gt;
&lt;br /&gt;
L&#039;intérêt du masque est de pouvoir limiter d&#039;un coup toutes les permissions d&#039;un fichier (étendues ou non), sauf celles du propriétaire ; on utilise pour cela le préfixe &amp;lt;code&amp;gt;m:&amp;lt;/code&amp;gt; suivi du droit maximal à accorder : &lt;br /&gt;
&amp;lt;code&amp;gt;getfacl index.php&lt;br /&gt;
    # file: index.php&lt;br /&gt;
    # owner: luce&lt;br /&gt;
    # group: www-data&lt;br /&gt;
    user::rw-&lt;br /&gt;
    user:jean:rw-&lt;br /&gt;
    group::r--&lt;br /&gt;
    group:web:rw-&lt;br /&gt;
    mask::rw-&lt;br /&gt;
    other::---&lt;br /&gt;
setfacl -m m:r index.php&lt;br /&gt;
getfacl index.php&lt;br /&gt;
    # file: index.php&lt;br /&gt;
    # owner: luce&lt;br /&gt;
    # group: www-data&lt;br /&gt;
    user::rw-&lt;br /&gt;
    user:jean:rw-                   #effective:r--&lt;br /&gt;
    group::r--&lt;br /&gt;
    group:web:rw-                 #effective:r--&lt;br /&gt;
    mask::r--&lt;br /&gt;
    other::---&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les valeurs modifiées sont indiquées par le commentaire « &#039;&#039;effective:&#039;&#039; » suivi des permissions effectives après l&#039;application du masque (ici, jean et &#039;&#039;web&#039;&#039; n&#039;ont plus que le droit &amp;lt;code&amp;gt;r&amp;lt;/code&amp;gt;, la situation reste la même pour &#039;&#039;www-data&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cadre type=&amp;quot;note&amp;quot;&amp;gt;L&#039;existence même d&#039;un masque renvoie au fonctionnement profond des ACL. Pour en comprendre l&#039;utilité réelle sans se limiter à l&#039;application pragmatique qui en est donnée ici, on se reportera à &#039;&#039;[http://www.suse.de/~agruen/acl/linux-acls/online/ POSIX Access Control Lists on Linux]&#039;&#039;.&amp;lt;/cadre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===getfacl===&lt;br /&gt;
Cette commande suivie d&#039;un nom de fichier affiche l&#039;ACL de ce fichier (&#039;&#039;get file&#039;s ACL&#039;&#039; « récupérer l&#039;ACL du fichier »). Par exemple : &lt;br /&gt;
&amp;lt;code&amp;gt;getfacl /var/www&lt;br /&gt;
   # file: var/www&lt;br /&gt;
   # owner: root&lt;br /&gt;
   # group: www-data&lt;br /&gt;
   user::rwx&lt;br /&gt;
   user:luce:rwx&lt;br /&gt;
   group::rwx&lt;br /&gt;
   mask::rwx&lt;br /&gt;
   other::r-x&lt;br /&gt;
   default:user::rwx&lt;br /&gt;
   default:user:khadija:rwx&lt;br /&gt;
   default:group::rwx&lt;br /&gt;
   default:group:www-data:r-x&lt;br /&gt;
   default:mask::rwx&lt;br /&gt;
   default:other::r-x&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On voit qu&#039;outre les droits traditionnels attribués à root:&#039;&#039;www-data&#039;&#039; (droits indiqués après &amp;lt;code&amp;gt;user::&amp;lt;/code&amp;gt; et &amp;lt;code&amp;gt;group::&amp;lt;/code&amp;gt;), sont aussi définis : &lt;br /&gt;
* des droits complets pour luce (&amp;lt;code&amp;gt;user:luce:rwx&amp;lt;/code&amp;gt;) ; &lt;br /&gt;
* une permission ACL par défaut donnant des droits complets à khadija sur tous les nouveaux fichiers créés sous &#039;&#039;/var/www/&#039;&#039; (&amp;lt;code&amp;gt;default:user:khadija:rwx&amp;lt;/code&amp;gt;) ;&lt;br /&gt;
* une autre permission ACL par défaut donnant des droits de lecture et d&#039;exécution au groupe &#039;&#039;www-data&#039;&#039; sur les mêmes fichiers (&amp;lt;code&amp;gt;default:group:www-data:r-x&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Noter que &amp;lt;code&amp;gt;user::&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;group::&amp;lt;/code&amp;gt; et &amp;lt;code&amp;gt;other::&amp;lt;/code&amp;gt; représentent le triplet &#039;&#039;utilisateur&#039;&#039; / &#039;&#039;groupe&#039;&#039; / &#039;&#039;reste du monde&#039;&#039; des permissions classiques. Appliquer cette commande sur un fichier qui n&#039;a pas d&#039;ACL définie donne les mêmes informations que &amp;lt;code&amp;gt;ls -l&amp;lt;/code&amp;gt;, dans un format différent :&lt;br /&gt;
&amp;lt;code&amp;gt;setfacl -b index.php # retirer les ACL pouvant exister&lt;br /&gt;
ls -l index.php&lt;br /&gt;
   -rw-r-----  1 root www-data 5055 2005-10-16 18:53 index.php&lt;br /&gt;
getfacl index.php&lt;br /&gt;
   # file: index.php&lt;br /&gt;
   # owner: root&lt;br /&gt;
   # group: www-data&lt;br /&gt;
   user::rw-&lt;br /&gt;
   group::r--&lt;br /&gt;
   other::---&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&#039;&#039;ls&#039;&#039;, &#039;&#039;cp&#039;&#039; et &#039;&#039;mv&#039;&#039;===&lt;br /&gt;
Ces commandes doivent pouvoir lister, copier et déplacer les ACL en même temps que les fichiers. Pour les deux premières commande, il faut préciser explicitment que l&#039;on veut afficher/conserver les droits (ce qui est aussi le cas quand on ne travaille que sur les droits classiques) : &amp;lt;code&amp;gt;ls -l&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;cp -a&amp;lt;/code&amp;gt;. La commande &#039;&#039;mv&#039;&#039;, quant à elle, préserve toujours les droits. &lt;br /&gt;
&lt;br /&gt;
Quand les droits étendus ne peuvent être conservés (déplacement ou copie vers un système de fichier qui n&#039;est pas configuré pour les recevoir ou utilisation d&#039;une version de &#039;&#039;cp&#039;&#039; trop ancienne), un message d&#039;avertissement en informe l&#039;utilisateur. Par exemple : &lt;br /&gt;
&amp;lt;code&amp;gt;setfacl -m u:luce:rw index.php&lt;br /&gt;
cp -a index.php /mnt/vfat&lt;br /&gt;
   cp: preserving permissions for `/mnt/vfat/index.php&#039;: Opération non supportée&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Noter qu&#039;un fichier comportant une ACL qu&#039;on veut lister par &amp;lt;code&amp;gt;ls -l&amp;lt;/code&amp;gt; n&#039;affiche qu&#039;un &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; à la suite de ses permissions. Seule la commande &#039;&#039;getfacl&#039;&#039;, pour l&#039;instant, permet d&#039;avoir connaissance du détail. Par exemple : &lt;br /&gt;
&amp;lt;code&amp;gt;setfacl -m u:khadija:rw /var/www/index.php&lt;br /&gt;
ls -l /var/www/index.php&lt;br /&gt;
   -rw-rw----+ 1 khadija www-data 5055 2005-10-16 18:53 /var/www/index.php&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Avec &amp;lt;code&amp;gt;-rw-rw----+&amp;lt;/code&amp;gt;, on sait que le fichier possède une ACL (&amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt;), sans en connaître les constituants.&lt;br /&gt;
&lt;br /&gt;
===Sauvegarde des données===&lt;br /&gt;
Sauvegarder des données dotées d&#039;ACL nécessite : &lt;br /&gt;
* l&#039;utilisation d&#039;un système de fichiers pour le stockage qui soit compatible ;&lt;br /&gt;
* et l&#039;utilisation d&#039;un logiciel de sauvegarde qui soit tout autant compatible.&lt;br /&gt;
:À titre indicatif, &#039;&#039;tar&#039;&#039; et &#039;&#039;cpio&#039;&#039; et &#039;&#039;rsync&#039;&#039; ne le sont pas (à moins d&#039;être patchés), &#039;&#039;star&#039;&#039; et &#039;&#039;pax&#039;&#039; le sont.&lt;br /&gt;
&lt;br /&gt;
Pour contourner le problème de sauvegarde, il est possible d&#039;écrire toutes les ACL dans un fichier qui servira de base à une restauration ultérieure : &amp;lt;code&amp;gt;getfacl --skip-base -R /dossier/dossier/ &amp;gt; fichier&amp;lt;/code&amp;gt; récupère les informations récursivement et les inscrit dans un simple fichier. La restauration se fait au moyen de &amp;lt;code&amp;gt;setfacl --restore=fichier&amp;lt;/code&amp;gt;. Il faut, pour qu&#039;elle fonctionne, se placer à la racine contenant l&#039;arborescence, en raison de la notation relative des chemins (d&#039;où le message &amp;lt;code&amp;gt;Removing leading &#039;/&#039; from absolute path names&amp;lt;/code&amp;gt; que l&#039;on peut souvent lire en tapant des commandes avec ces programmes). Le chemin d&#039;un répertoire &#039;&#039;/tmp/test&#039;&#039; est enregistré comme &#039;&#039;tmp/test&#039;&#039; : on doit donc, pour restaurer, lancer la commande depuis la racine de &#039;&#039;/tmp&#039;&#039;, c&#039;est-à-dire &#039;&#039;/&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Par exemple : le répertoire &#039;&#039;/tmp/test&#039;&#039; contient trois fichiers à ACL. On sauvegarde les ACL avec &amp;lt;code&amp;gt;getfacl --skip-base -R /tmp/test &amp;gt; acl.acl&amp;lt;/code&amp;gt;. Pour restaurer, on se place à la racine (&amp;lt;code&amp;gt;cd /&amp;lt;/code&amp;gt;) et on lance &amp;lt;code&amp;gt;setfacl --restore=acl.acl&amp;lt;/code&amp;gt;. Si on avait lancé la commande depuis &#039;&#039;/test&#039;&#039;, &#039;&#039;setfacl&#039;&#039; aurait renvoyé les erreurs : &lt;br /&gt;
&amp;lt;code&amp;gt;setfacl: tmp/test: Aucun fichier ou répertoire de ce type&lt;br /&gt;
setfacl: tmp/test/a: Aucun fichier ou répertoire de ce type&lt;br /&gt;
setfacl: tmp/test/b: Aucun fichier ou répertoire de ce type&lt;br /&gt;
setfacl: tmp/test/c: Aucun fichier ou répertoire de ce type&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Note concernant la syntaxe de &#039;&#039;setfacl&#039;&#039;==&lt;br /&gt;
Les préfixes abrégés peuvent être développés et les permissions codées en octal (avec préfixe &#039;&#039;0&#039;&#039; optionnel). Ces trois commandes ont donc le même sens : &lt;br /&gt;
&amp;lt;code&amp;gt;setfacl -m d:u:luce:rw,g:www-data:r,o:- index.php&lt;br /&gt;
setfacl -m default:user:luce:6,group:www-data:4,other:0  index.php&lt;br /&gt;
setfacl -m default:user:luce:06,group:www-data:04,other:00  index.php&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;cadre type=&amp;quot;note&amp;quot;&amp;gt;&lt;br /&gt;
Tout au long de ce document, on a parlé de « permissions classiques » opposées à des « permissions étendues » qui leur seraient ajoutées. C&#039;est une simplification : dans les faits, un système de fichiers monté avec le support des ACL change son appréhension globale des permissions, qui sont toutes des ACL, qu&#039;elles soient minimales (utilisateur primaire, groupe primaire, reste du monde) ou étendues. Dans ce dernier cas, c&#039;est la notion de groupe qui est redéfinie : tout utilisateur ou groupe ajouté à l&#039;utilisateur primaire est enregistré avec ses droits dans une classe « groupe » étendue. &lt;br /&gt;
&lt;br /&gt;
Cela explique la nécessité d&#039;un masque : c&#039;est la valeur limite réelle de la classe « groupe », que les entrées qu&#039;elle contient ne peuvent dépasser. Un &amp;lt;code&amp;gt;ls -l&amp;lt;/code&amp;gt; sur un fichier dont le masque ACL a été abaissé à &amp;lt;code&amp;gt;r--&amp;lt;/code&amp;gt; alors que les droits du groupe primaire étaient auparavant &amp;lt;code&amp;gt;rw-&amp;lt;/code&amp;gt; donnera : &amp;lt;code&amp;gt;-rw-r-----+&amp;lt;/code&amp;gt; et non &amp;lt;code&amp;gt;-rw-rw----+&amp;lt;/code&amp;gt;. Inversement, si l&#039;on change par &#039;&#039;chmod&#039;&#039; les permissions du groupe principal, cela revient à changer le masque, donc les permissions de tous les utilisateurs et groupes ajoutés.&lt;br /&gt;
&amp;lt;/cadre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Documents annexes==&lt;br /&gt;
* &#039;&#039;&#039;Articles de Léa : &#039;&#039;&#039;&lt;br /&gt;
** les [[permissions]] « classiques » POSIX.1 ;&lt;br /&gt;
** les [[attributs étendus]] des systèmes de fichiers &#039;&#039;ext2&#039;&#039; et &#039;&#039;ext3&#039;&#039; ;&lt;br /&gt;
* &#039;&#039;&#039;pages de manuel : &#039;&#039;&#039;&lt;br /&gt;
** &amp;lt;code&amp;gt;man acl&amp;lt;/code&amp;gt; ; &lt;br /&gt;
** &amp;lt;code&amp;gt;man setfacl&amp;lt;/code&amp;gt; ; &lt;br /&gt;
** &amp;lt;code&amp;gt;man getfacl&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &#039;&#039;&#039;sites externes : &#039;&#039;&#039;&lt;br /&gt;
** [http://www.linuxplusvalue.be/mylpv.php?id=153 Les ACL POSIX] ;&lt;br /&gt;
** [http://www.linuxfrench.net/article.php3?id_article=1463 Comment fonctionnent les ACL POSIX sous GNU/Linux] ;&lt;br /&gt;
** [http://www.suse.de/~agruen/acl/linux-acls/online/ POSIX Access Control Lists on Linux] (anglais).&lt;br /&gt;
&lt;br /&gt;
{{Copy|27.10.05|Vincent Ramos|FDL}}&lt;/div&gt;</summary>
		<author><name>FuraX</name></author>
	</entry>
</feed>