<?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=Vincent+Ramos</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=Vincent+Ramos"/>
	<link rel="alternate" type="text/html" href="https://lea-linux.org/documentations/Sp%C3%A9cial:Contributions/Vincent_Ramos"/>
	<updated>2026-04-06T06:55:52Z</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=13751</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=13751"/>
		<updated>2006-09-24T17:58:22Z</updated>

		<summary type="html">&lt;p&gt;Vincent Ramos : /* Interaction avec KDE */ Nouvelle section&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 modifications : 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 ces 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 commandes, il faut préciser explicitement 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;
===Interaction avec KDE===&lt;br /&gt;
Le gestionnaire de bureau [http://www.kde.org KDE] permet, depuis la version 3.5, de visualiser et manipuler les ACL des fichiers. Il suffit de cliquer avec le bouton droit de la souris sur un fichier et de sélectionner l&#039;onglet « Droits d&#039;accès » puis « Droits d&#039;accès avancés ». De là, on peut consulter l&#039;ACL du fichier de manière graphique.&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>Vincent Ramos</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Gestion_des_ACL&amp;diff=12788</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=12788"/>
		<updated>2006-06-14T11:13:26Z</updated>

		<summary type="html">&lt;p&gt;Vincent Ramos : /* Noyau */ typo&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 modifications : 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 ces 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 commandes, il faut préciser explicitement 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>Vincent Ramos</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Trucs:Oldid%3D575&amp;diff=10297</id>
		<title>Trucs:Oldid=575</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Trucs:Oldid%3D575&amp;diff=10297"/>
		<updated>2005-11-01T11:36:50Z</updated>

		<summary type="html">&lt;p&gt;Vincent Ramos : #REDIRECT Trucs:Installation des drivers Nvidia 6xxx 10.1 Community &amp;#039;kernel 2.6.8.1-xx-mdk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Trucs:Installation des drivers Nvidia 6xxx 10.1 Community &#039;kernel 2.6.8.1-xx-mdk)]]&lt;/div&gt;</summary>
		<author><name>Vincent Ramos</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Gestion_des_ACL&amp;diff=10206</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=10206"/>
		<updated>2005-10-28T18:18:22Z</updated>

		<summary type="html">&lt;p&gt;Vincent Ramos : /* Documents annexes */ Intitulé du lien « Comment fonctionne les acls Posix sous linux » → « Comment fonctionnent les ACL POSIX sous GNU/Linux »&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 -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 -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>Vincent Ramos</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Attributs_%C3%A9tendus&amp;diff=10205</id>
		<title>Attributs étendus</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Attributs_%C3%A9tendus&amp;diff=10205"/>
		<updated>2005-10-28T18:16:39Z</updated>

		<summary type="html">&lt;p&gt;Vincent Ramos : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Les [[système de fichiers|systèmes de fichiers]] &#039;&#039;ext2&#039;&#039; et &#039;&#039;ext3&#039;&#039; (ainsi que &#039;&#039;reiserfs&#039;&#039; dans certaines conditions) offrent la possibilité de donner à des fichiers (fichiers réels ou répertoires) des &#039;&#039;&#039;attributs étendus&#039;&#039;&#039; (AÉ ou encore &#039;&#039;extended attributs&#039;&#039;, EA) qui s&#039;ajoutent aux [[permissions|permissions classiques POSIX.1]], éventuellement complétées par les [[ACL|permissions étendues ACL]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cadre type=&amp;quot;alert&amp;quot;&amp;gt;Seuls ces systèmes de fichiers offrant ces attributs, il n&#039;est pas prudent ─ en terme de sécurité ─ de s&#039;appuyer lourdement sur leur présence si l&#039;on est amené à transférer fréquemment des données d&#039;un système de fichiers &#039;&#039;ext&#039;&#039; à un autre. D&#039;autre part, il convient de tester ces possibilités : toutes les versions du noyau n&#039;en tiennent pas compte de la même manière.&amp;lt;/cadre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Mise en place==&lt;br /&gt;
Il n&#039;y a rien à faire pour des partitions en &#039;&#039;ext2&#039;&#039; ou &#039;&#039;ext3&#039;&#039;, qui respectent nativement les attributs étendus.&lt;br /&gt;
&lt;br /&gt;
Chose assez peu connue, cependant, le système de fichiers &#039;&#039;reiserfs&#039;&#039; peut respecter les attributs étendus, à condition d&#039;[[fstab|être monté]] avec l&#039;option idoine &amp;lt;code&amp;gt;attrs&amp;lt;/code&amp;gt;. Pour ce faire, les commandes suivantes sont appliquées : &lt;br /&gt;
* sur une partition non encore montée : &amp;lt;code&amp;gt;mount -t reiserfs -o attrs /dev/partition /point/de/montage&amp;lt;/code&amp;gt; ; &lt;br /&gt;
* sur une partition déjà montée : &amp;lt;code&amp;gt;mount -o attrs /point/de/montage&amp;lt;/code&amp;gt; (remontage à la volée).&lt;br /&gt;
&lt;br /&gt;
Pour que la prise en compte soit effective à chaque montage automatique (le cas échéant), il faut ajouter l&#039;option dans &#039;&#039;[[fstab|/etc/fstab]]&#039;&#039;. Par exemple : &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
/dev/hda1       /               reiserfs    defaults,acl,attrs 0       1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enfin, on peut recompiler son noyau avec l&#039;option &amp;lt;code&amp;gt;CONFIG_REISERFS_FS_XATTR = y&amp;lt;/code&amp;gt; pour que le mode &amp;lt;code&amp;gt;attr&amp;lt;/code&amp;gt; soit automatiquement appliqué lors du montage d&#039;une partition en &#039;&#039;reiserfs&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cadre type=&amp;quot;note&amp;quot;&amp;gt;Noter que des fichiers d&#039;une partition en &#039;&#039;reiserfs&#039;&#039; montée sans l&#039;option &amp;lt;code&amp;gt;attrs&amp;lt;/code&amp;gt; (ou la recompilation du noyau) peuvent recevoir des attributs étendus : ils seront bien enregistrés mais n&#039;auront aucun effet. La commande de modification d&#039;attributs, &#039;&#039;chattr&#039;&#039;, ne renverra donc aucun message d&#039;erreur sans pour autant que les attributs soient pris en compte. Ce détail peut avoir des répercussion pour la sécurité du système : on peut, à tort, croire protéger des fichiers.&amp;lt;/cadre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Types d&#039;attributs==&lt;br /&gt;
Selon la norme POSIX.1, tout fichier possède les permissions en lecture, écriture et exécution. On peut leur adjoindre des attributs supplémentaires, qui s&#039;imposent à tous les utilisateurs (dont root, qui peut cependant annuler ces attributs) quand ils modifient les actions qu&#039;on peut avoir sur eux. Certains attributs sont encore expérimentaux (octobre 2005) et nécessitent de patcher le noyau pour qu&#039;ils aient un effet réel. &lt;br /&gt;
;append only (a), « ajouter seulement » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Protège le fichier contre la suppression de contenu : on ne peut que lui en ajouter. &lt;br /&gt;
;compressed (c), « compressé » ─ &#039;&#039;expérimental&#039;&#039;&lt;br /&gt;
:Le fichier est automatiquement compressé ─ si c&#039;est utile, et avec un format de compression le plus efficace ─ quand il est stocké. La décompression lors de la lecture et la compression des données ajoutées au fichier par la suite se font à la volée, de manière transparente pour l&#039;utilisateur (la commande &amp;lt;code&amp;gt;ls -l&amp;lt;/code&amp;gt;, par exemple, montre la taille décompressée). &lt;br /&gt;
:Cet attribut appliqué à un répertoire ne le compresse pas mais fait se compresser automatiquement tout nouveau fichier qu&#039;on y crée.&lt;br /&gt;
;no dump (d), « pas de sauvegarde »&lt;br /&gt;
:Un fichier ainsi marqué sera ignoré par la commande de sauvegarde &#039;&#039;dump&#039;&#039; (qui ne fonctionne que pour &#039;&#039;ext2&#039;&#039; et &#039;&#039;ext3&#039;&#039;). Cet attribut est utile pour empêcher la sauvegarde par &#039;&#039;dump&#039;&#039; d&#039;un fichier ou répertoire situés dans un système de fichiers monté avec l&#039;option &amp;lt;code&amp;gt;dump&amp;lt;/code&amp;gt; positionnée à &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; (cf &#039;&#039;[[fstab]]&#039;&#039;).&lt;br /&gt;
;immutable (i), « immuable » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Protège le fichier contre toute modification (suppression, modification, déplacement, changements de permissions), même par root, et empêche qu&#039;on crée un lien vers lui. Seule la modification des attributs étendus est permise à son propriétaire et seul root peut enlever l&#039;attribut « immuable » d&#039;un fichier.&lt;br /&gt;
:Cet attribut est sans doute l&#039;un des plus intéressants.&lt;br /&gt;
;data journalling (j), « journalisation des données » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Cet attribut n&#039;est utile qu&#039;avec une partition en &#039;&#039;ext3&#039;&#039; montée avec les options de journalisation des données &amp;lt;code&amp;gt;data=ordered&amp;lt;/code&amp;gt; (montage par défaut) ou &amp;lt;code&amp;gt;data=writeback&amp;lt;/code&amp;gt; pour simuler une journalisation du type &amp;lt;code&amp;gt;data=journal&amp;lt;/code&amp;gt;, où les données sont écrites dans le journal avant de l&#039;être dans le fichier lui-même. Consulter &amp;lt;code&amp;gt;man mount 8&amp;lt;/code&amp;gt; pour plus de détails sur les mécanismes de journalisation d&#039;&#039;&#039;ext3&#039;&#039;. &lt;br /&gt;
:Sur une partition &#039;&#039;ext3&#039;&#039; en mode &amp;lt;code&amp;gt;data=journal&amp;lt;/code&amp;gt;, cet attribut est ignoré, de même que sur les partitions en &#039;&#039;ext2&#039;&#039; et &#039;&#039;reiserfs&#039;&#039;, le premier type n&#039;étant pas journalisé, le second l&#039;étant d&#039;une manière incompatible.&lt;br /&gt;
;secure deletion (s), « effacement sécurisé »  ─ &#039;&#039;expérimental&#039;&#039;&lt;br /&gt;
:Un fichier portant cet attribut est non seulement « effacé » mais en plus les blocs qu&#039;il occupait dans le système de fichiers sont recouverts de zéros pour éviter qu&#039;on puisse récupérer les données malgré l&#039;effacement. &lt;br /&gt;
:Normalement, effacer un fichier consiste seulement à détruire toute référence vers l&#039;espace occupé par les données de ce fichier dans la partition. Il n&#039;est cependant pas question de détruire physiquement les données elles-mêmes, sauf si le fichier possède cet attribut, auquel cas non seulement il n&#039;est plus accessible mais en plus tous ses bits sont réécrits.&lt;br /&gt;
;no tail-merging (t)&lt;br /&gt;
;undeletable (u), « ineffaçable » ─ &#039;&#039;&#039;expérimental&#039;&#039;&#039;&lt;br /&gt;
:Lors d&#039;un effacement, les références vers l&#039;espace du système de fichiers qui contient les données sont détruites, mais pas les données. Sans ces références, cependant, l&#039;espace anciennement réservé peut être utilisé par des fichiers nouvellement créés ou ayant été augmentés. Dans ce cas, il n&#039;est plus possible de récupérer les données en question. &lt;br /&gt;
:L&#039;attribut « ineffaçable » permet de préserver les blocs qui contenaient les données de façon à ce qu&#039;on puisse les récupérer si besoin est. L&#039;espace-disque n&#039;est donc pas libéré.&lt;br /&gt;
;no atime updates (A), « pas de mise à jour de la date de dernier accès »&lt;br /&gt;
:À chaque fois qu&#039;on accède à un fichier, la date du dernier accès est modifiée. Dans un système de fichiers dans lequel existent de nombreux fichiers auxquels on accède souvent (c&#039;est le cas pour les serveurs de &#039;&#039;news&#039;&#039;), ces modifications peuvent ralentir le système. &lt;br /&gt;
:Donner à un fichier l&#039;attribut &#039;&#039;no atime updates&#039;&#039; permet d&#039;éviter ce problème. Noter que la même option existe lorsque l&#039;on monte une partition dans l&#039;arborescence globale (&amp;lt;code&amp;gt;mount -o noatime&amp;lt;/code&amp;gt;), option que l&#039;on peut inscrire dans [[fstab|/etc/fstab]].&lt;br /&gt;
;synchronous directory updates (D), « mise à jour synchone des répertoires »&lt;br /&gt;
;synchronous updates (S), « mise à jour synchrone »&lt;br /&gt;
:Ces deux attributs ont un effet similaire. Le premier sert aux répertoires, le second aux fichiers. Les données des répertoires et fichiers concernés sont mises à jour dès qu&#039;une modification a eu lieu (et non en différé, comme c&#039;est le cas par défaut pour &#039;&#039;ext2&#039;&#039; et &#039;&#039;ext3&#039;&#039;). C&#039;est l&#039;équivalent des options de montage &amp;lt;code&amp;gt;mount -o sync&amp;lt;/code&amp;gt; et &amp;lt;code&amp;gt;mount -o dirsync&amp;lt;/code&amp;gt; (qu&#039;on peut aussi passer dans &#039;&#039;fstab&#039;&#039;) mais pour une sous-partie de l&#039;arborescence et non la partition entière.&lt;br /&gt;
;top of directory hierarchy (T), « répertoire racine » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Cet attribut indique au répartiteur de blocs Orlov (ou &#039;&#039;[http://lwn.net/Articles/14633/ Orlov block allocator]&#039;&#039;, utilisé par le noyau Linux pour les systèmes de fichiers &#039;&#039;ext2&#039;&#039; et &#039;&#039;ext3&#039;&#039; depuis la version 2.5.46) que le répertoire concerné doit être considéré comme un répertoire racine de la hiérarchie des répertoires. &lt;br /&gt;
:L&#039;allocateur de blocs est un processus propre au système de fichier permettant de répartir les blocs de données des fichiers dans l&#039;espace disponible tout en garantissant une qu&#039;il ne se produira pas une trop grande fragmentation. Pour cela, on place généralement dans un même groupe de cylindres du disque dur les blocs de fichiers dépendant d&#039;un  même répertoire. Dans le cas contraire, les données risquent d&#039;être éparpillées, voire fragmentées (les blocs d&#039;un même fichier sont alors répartis sur plusieurs cylindres non contigus). On ne peut cependant prévoir à l&#039;avance de quel espace aura besoin un répertoire racine. Il pourrait ne contenir que peu de fichiers ou, au contraire, une arborescence complète et chargée. Le répartiteur Orlov prend donc soin d&#039;éloigner le plus possible les uns des autres les répertoires racines, pour qu&#039;ils disposent d&#039;un espace suffisant où croître.&lt;br /&gt;
:Ajouter cet attribut à un répertoire permet au répartiteur de le traiter comme un répertoire racine, même s&#039;il n&#039;en est pas un, et de le placer  loin des autres répertoires racines. Il est donc utile avec des sous-arborescences de fichiers complexes et lourdes qui risqueraient d&#039;être fragmentées.&lt;br /&gt;
&lt;br /&gt;
==Commandes==&lt;br /&gt;
ll existe deux commandes pour accéder aux attributs étendus : &#039;&#039;lsattr&#039;&#039; (&#039;&#039;list attributes&#039;&#039;, « lister les attributs ») &#039;&#039;chattr&#039;&#039; (&#039;&#039;change attributes&#039;&#039;, « changer les attributs »). Toutes deux sont incluses dans le paquetage &#039;&#039;e2fsprogs&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===chattr===&lt;br /&gt;
Cette commande s&#039;utilise quasiment comme un &#039;&#039;chmod&#039;&#039; simplifié : en effet, les attributs ne peuvent être indiqués que sous forme symbolique (dont les codes sont donnés ci-dessus) et non au moyen d&#039;un éventuel nombre octal.&lt;br /&gt;
&lt;br /&gt;
Ainsi, pour ajouter ou donner un attibut, on utilise la commande suivie de &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; et du code ; par exemple, rendre un fichier « immuable » se fait avec la commande (en root) :&lt;br /&gt;
&amp;lt;code&amp;gt;chattr +i fichier&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Retirer un attribut requiert l&#039;opérateur &amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt;. La commande pour enlever l&#039;attribut « immuable » est donc : &lt;br /&gt;
&amp;lt;code&amp;gt;chattr -i fichier&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enfin, pour faire en sorte qu&#039;un fichier n&#039;ait que le ou les attributs mentionnés :&lt;br /&gt;
&amp;lt;code&amp;gt;chattr =i fichier&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La commande peut être utilisée de manière récursive au moyen de l&#039;option &amp;lt;code&amp;gt;-R&amp;lt;/code&amp;gt; : pour rendre toute une hiérarchie immuable, il suffit de : &lt;br /&gt;
&amp;lt;code&amp;gt;chattr -R + i répertoire/&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===lsattr===&lt;br /&gt;
Cette commande fonctionne comme &#039;&#039;ls&#039;&#039; et prend les options &amp;lt;code&amp;gt;-R&amp;lt;/code&amp;gt; (listage récursif), &amp;lt;code&amp;gt;-a&amp;lt;/code&amp;gt; (tout afficher) et &amp;lt;code&amp;gt;-d&amp;lt;/code&amp;gt; (lister les répertoires comme des fichiers), entre autres ; &#039;&#039;lsattr&#039;&#039; peut afficher des attributs qu&#039;on ne peut modifier avec &#039;&#039;chattr&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
L&#039;affichage est simple : chaque attribut du fichier est représenté par son code, une absence d&#039;attribut l&#039;étant par un &amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt;, à la manière du codage des permissions pratiqué par &#039;&#039;ls -l&#039;&#039; (&amp;lt;code&amp;gt;-rw-r--r--&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Ainsi : &lt;br /&gt;
&amp;lt;code&amp;gt;chattr +ASacDdijsTtu fichier&lt;br /&gt;
lsattr fichier&lt;br /&gt;
    suS-iadAc----j-tT fichier&amp;lt;/code&amp;gt;&lt;br /&gt;
L&#039;attribut &amp;lt;code&amp;gt;D&amp;lt;/code&amp;gt; n&#039;a pas été appliqué, puisque le fichier n&#039;est pas un répertoire. &lt;br /&gt;
&lt;br /&gt;
Les autres valeurs que peut indiquer &#039;&#039;lsattr&#039;&#039; s&#039;intercalent dans les espaces vacants : &#039;&#039;I&#039;&#039; (fichier dépendant d&#039;un répertoire indexé par HTree), &#039;&#039;E&#039;&#039; (fichier dont la compression est erronée ; dépend directement de l&#039;attribut &#039;&#039;&amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt;ompressed&#039;&#039;), &#039;&#039;X&#039;&#039; (fichier compressé dont une partie des données brutes peut être consultée directement ; dépend de &amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt;) et &#039;&#039;Z&#039;&#039; (fichier compressé corrompu ; &#039;&amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt;). Ce sont des valeurs non modifiables ajoutées automatiquement aux fichiers. Les trois dernières ne sont toujours pas implémentées.&lt;br /&gt;
&lt;br /&gt;
Noter que &#039;&#039;ls&#039;&#039; n&#039;indique pas la présence éventuelle d&#039;attributs étendus et que &#039;&#039;find&#039;&#039; ne peut rechercher des fichiers selon ce critère.&lt;br /&gt;
&lt;br /&gt;
===ls, cp, mv===&lt;br /&gt;
Les commandes classiques de listage, copie et déplacement ne gèrent pas les attributs étendus, soit qu&#039;elles ne les affichent pas (&#039;&#039;ls&#039;&#039;), soit qu&#039;elles les ignorent.&lt;br /&gt;
&lt;br /&gt;
===Sauvegarde des données===&lt;br /&gt;
Sauvegarder des données dotées d&#039;attributs étendus ne peut se faire correctement que si : &lt;br /&gt;
* le système de fichiers de stockage gère lui-même les attributs ; &lt;br /&gt;
* le logiciel de sauvegarde est compatible avec les attributs.&lt;br /&gt;
&lt;br /&gt;
Dans le second cas, il convient de ne pas utiliser &#039;&#039;cpio&#039;&#039;, &#039;&#039;tar&#039;&#039; ou &#039;&#039;rsync&#039;&#039;, par exemple, mais une application comme &#039;&#039;star&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Copy|28.10.05|Vincent Ramos|FDL}}&lt;/div&gt;</summary>
		<author><name>Vincent Ramos</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Attributs_%C3%A9tendus&amp;diff=10182</id>
		<title>Attributs étendus</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Attributs_%C3%A9tendus&amp;diff=10182"/>
		<updated>2005-10-28T09:20:33Z</updated>

		<summary type="html">&lt;p&gt;Vincent Ramos : /* Sauvegarde des données */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Les [[système de fichiers|systèmes de fichiers]] &#039;&#039;ext2&#039;&#039; et &#039;&#039;ext3&#039;&#039; (ainsi que &#039;&#039;reiserfs&#039;&#039; dans certaines conditions) offrent la possibilité de donner à des fichiers (fichiers réels ou répertoires) des &#039;&#039;&#039;attributs étendus&#039;&#039;&#039; qui s&#039;ajoutent aux [[permissions|permissions classiques POSIX.1]], éventuellement complétées par les [[ACL|permissions étendues ACL]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cadre type=&amp;quot;alert&amp;quot;&amp;gt;Seuls ces systèmes de fichiers offrant ces attributs, il n&#039;est pas prudent ─ en terme de sécurité ─ de s&#039;appuyer lourdement sur leur présence si l&#039;on est amené à transférer fréquemment des données d&#039;un système de fichiers &#039;&#039;ext&#039;&#039; à un autre. D&#039;autre part, il convient de tester ces possibilités : toutes les versions du noyau n&#039;en tiennent pas compte de la même manière.&amp;lt;/cadre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Mise en place==&lt;br /&gt;
Il n&#039;y a rien à faire pour des partitions en &#039;&#039;ext2&#039;&#039; ou &#039;&#039;ext3&#039;&#039;, qui respectent nativement les attributs étendus.&lt;br /&gt;
&lt;br /&gt;
Chose assez peu connue, cependant, le système de fichiers &#039;&#039;reiserfs&#039;&#039; peut respecter les attributs étendus, à condition d&#039;[[fstab|être monté]] avec l&#039;option idoine &amp;lt;code&amp;gt;attrs&amp;lt;/code&amp;gt;. Pour ce faire, les commandes suivantes sont appliquées : &lt;br /&gt;
* sur une partition non encore montée : &amp;lt;code&amp;gt;mount -t reiserfs -o attrs /dev/partition /point/de/montage&amp;lt;/code&amp;gt; ; &lt;br /&gt;
* sur une partition déjà montée : &amp;lt;code&amp;gt;mount -o attrs /point/de/montage&amp;lt;/code&amp;gt; (remontage à la volée).&lt;br /&gt;
&lt;br /&gt;
Pour que la prise en compte soit effective à chaque montage automatique (le cas échéant), il faut ajouter l&#039;option dans &#039;&#039;[[fstab|/etc/fstab]]&#039;&#039;. Par exemple : &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
/dev/hda1       /               reiserfs    defaults,acl,attrs 0       1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enfin, on peut recompiler son noyau avec l&#039;option &amp;lt;code&amp;gt;CONFIG_REISERFS_FS_XATTR = y&amp;lt;/code&amp;gt; pour que le mode &amp;lt;code&amp;gt;attr&amp;lt;/code&amp;gt; soit automatiquement appliqué lors du montage d&#039;une partition en &#039;&#039;reiserfs&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cadre type=&amp;quot;note&amp;quot;&amp;gt;Noter que des fichiers d&#039;une partition en &#039;&#039;reiserfs&#039;&#039; montée sans l&#039;option &amp;lt;code&amp;gt;attrs&amp;lt;/code&amp;gt; (ou la recompilation du noyau) peuvent recevoir des attributs étendus : ils seront bien enregistrés mais n&#039;auront aucun effet. La commande de modification d&#039;attributs, &#039;&#039;chattr&#039;&#039;, ne renverra donc aucun message d&#039;erreur sans pour autant que les attributs soient pris en compte. Ce détail peut avoir des répercussion pour la sécurité du système : on peut, à tort, croire protéger des fichiers.&amp;lt;/cadre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Types d&#039;attributs==&lt;br /&gt;
Selon la norme POSIX.1, tout fichier possède les permissions en lecture, écriture et exécution. On peut leur adjoindre des attributs supplémentaires, qui s&#039;imposent à tous les utilisateurs (dont root, qui peut cependant annuler ces attributs) quand ils modifient les actions qu&#039;on peut avoir sur eux. Certains attributs sont encore expérimentaux (octobre 2005) et nécessitent de patcher le noyau pour qu&#039;ils aient un effet réel. &lt;br /&gt;
;append only (a), « ajouter seulement » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Protège le fichier contre la suppression de contenu : on ne peut que lui en ajouter. &lt;br /&gt;
;compressed (c), « compressé » ─ &#039;&#039;expérimental&#039;&#039;&lt;br /&gt;
:Le fichier est automatiquement compressé ─ si c&#039;est utile, et avec un format de compression le plus efficace ─ quand il est stocké. La décompression lors de la lecture et la compression des données ajoutées au fichier par la suite se font à la volée, de manière transparente pour l&#039;utilisateur (la commande &amp;lt;code&amp;gt;ls -l&amp;lt;/code&amp;gt;, par exemple, montre la taille décompressée). &lt;br /&gt;
:Cet attribut appliqué à un répertoire ne le compresse pas mais fait se compresser automatiquement tout nouveau fichier qu&#039;on y crée.&lt;br /&gt;
;no dump (d), « pas de sauvegarde »&lt;br /&gt;
:Un fichier ainsi marqué sera ignoré par la commande de sauvegarde &#039;&#039;dump&#039;&#039; (qui ne fonctionne que pour &#039;&#039;ext2&#039;&#039; et &#039;&#039;ext3&#039;&#039;). Cet attribut est utile pour empêcher la sauvegarde par &#039;&#039;dump&#039;&#039; d&#039;un fichier ou répertoire situés dans un système de fichiers monté avec l&#039;option &amp;lt;code&amp;gt;dump&amp;lt;/code&amp;gt; positionnée à &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; (cf &#039;&#039;[[fstab]]&#039;&#039;).&lt;br /&gt;
;immutable (i), « immuable » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Protège le fichier contre toute modification (suppression, modification, déplacement, changements de permissions), même par root, et empêche qu&#039;on crée un lien vers lui. Seule la modification des attributs étendus est permise à son propriétaire et seul root peut enlever l&#039;attribut « immuable » d&#039;un fichier.&lt;br /&gt;
:Cet attribut est sans doute l&#039;un des plus intéressants.&lt;br /&gt;
;data journalling (j), « journalisation des données » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Cet attribut n&#039;est utile qu&#039;avec une partition en &#039;&#039;ext3&#039;&#039; montée avec les options de journalisation des données &amp;lt;code&amp;gt;data=ordered&amp;lt;/code&amp;gt; (montage par défaut) ou &amp;lt;code&amp;gt;data=writeback&amp;lt;/code&amp;gt; pour simuler une journalisation du type &amp;lt;code&amp;gt;data=journal&amp;lt;/code&amp;gt;, où les données sont écrites dans le journal avant de l&#039;être dans le fichier lui-même. Consulter &amp;lt;code&amp;gt;man mount 8&amp;lt;/code&amp;gt; pour plus de détails sur les mécanismes de journalisation d&#039;&#039;&#039;ext3&#039;&#039;. &lt;br /&gt;
:Sur une partition &#039;&#039;ext3&#039;&#039; en mode &amp;lt;code&amp;gt;data=journal&amp;lt;/code&amp;gt;, cet attribut est ignoré, de même que sur les partitions en &#039;&#039;ext2&#039;&#039; et &#039;&#039;reiserfs&#039;&#039;, le premier type n&#039;étant pas journalisé, le second l&#039;étant d&#039;une manière incompatible.&lt;br /&gt;
;secure deletion (s), « effacement sécurisé »  ─ &#039;&#039;expérimental&#039;&#039;&lt;br /&gt;
:Un fichier portant cet attribut est non seulement « effacé » mais en plus les blocs qu&#039;il occupait dans le système de fichiers sont recouverts de zéros pour éviter qu&#039;on puisse récupérer les données malgré l&#039;effacement. &lt;br /&gt;
:Normalement, effacer un fichier consiste seulement à détruire toute référence vers l&#039;espace occupé par les données de ce fichier dans la partition. Il n&#039;est cependant pas question de détruire physiquement les données elles-mêmes, sauf si le fichier possède cet attribut, auquel cas non seulement il n&#039;est plus accessible mais en plus tous ses bits sont réécrits.&lt;br /&gt;
;no tail-merging (t)&lt;br /&gt;
;undeletable (u), « ineffaçable » ─ &#039;&#039;&#039;expérimental&#039;&#039;&#039;&lt;br /&gt;
:Lors d&#039;un effacement, les références vers l&#039;espace du système de fichiers qui contient les données sont détruites, mais pas les données. Sans ces références, cependant, l&#039;espace anciennement réservé peut être utilisé par des fichiers nouvellement créés ou ayant été augmentés. Dans ce cas, il n&#039;est plus possible de récupérer les données en question. &lt;br /&gt;
:L&#039;attribut « ineffaçable » permet de préserver les blocs qui contenaient les données de façon à ce qu&#039;on puisse les récupérer si besoin est. L&#039;espace-disque n&#039;est donc pas libéré.&lt;br /&gt;
;no atime updates (A), « pas de mise à jour de la date de dernier accès »&lt;br /&gt;
:À chaque fois qu&#039;on accède à un fichier, la date du dernier accès est modifiée. Dans un système de fichiers dans lequel existent de nombreux fichiers auxquels on accède souvent (c&#039;est le cas pour les serveurs de &#039;&#039;news&#039;&#039;), ces modifications peuvent ralentir le système. &lt;br /&gt;
:Donner à un fichier l&#039;attribut &#039;&#039;no atime updates&#039;&#039; permet d&#039;éviter ce problème. Noter que la même option existe lorsque l&#039;on monte une partition dans l&#039;arborescence globale (&amp;lt;code&amp;gt;mount -o noatime&amp;lt;/code&amp;gt;), option que l&#039;on peut inscrire dans [[fstab|/etc/fstab]].&lt;br /&gt;
;synchronous directory updates (D), « mise à jour synchone des répertoires »&lt;br /&gt;
;synchronous updates (S), « mise à jour synchrone »&lt;br /&gt;
:Ces deux attributs ont un effet similaire. Le premier sert aux répertoires, le second aux fichiers. Les données des répertoires et fichiers concernés sont mises à jour dès qu&#039;une modification a eu lieu (et non en différé, comme c&#039;est le cas par défaut pour &#039;&#039;ext2&#039;&#039; et &#039;&#039;ext3&#039;&#039;). C&#039;est l&#039;équivalent des options de montage &amp;lt;code&amp;gt;mount -o sync&amp;lt;/code&amp;gt; et &amp;lt;code&amp;gt;mount -o dirsync&amp;lt;/code&amp;gt; (qu&#039;on peut aussi passer dans &#039;&#039;fstab&#039;&#039;) mais pour une sous-partie de l&#039;arborescence et non la partition entière.&lt;br /&gt;
;top of directory hierarchy (T), « répertoire racine » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Cet attribut indique au répartiteur de blocs Orlov (ou &#039;&#039;[http://lwn.net/Articles/14633/ Orlov block allocator]&#039;&#039;, utilisé par le noyau Linux pour les systèmes de fichiers &#039;&#039;ext2&#039;&#039; et &#039;&#039;ext3&#039;&#039; depuis la version 2.5.46) que le répertoire concerné doit être considéré comme un répertoire racine de la hiérarchie des répertoires. &lt;br /&gt;
:L&#039;allocateur de blocs est un processus propre au système de fichier permettant de répartir les blocs de données des fichiers dans l&#039;espace disponible tout en garantissant une qu&#039;il ne se produira pas une trop grande fragmentation. Pour cela, on place généralement dans un même groupe de cylindres du disque dur les blocs de fichiers dépendant d&#039;un  même répertoire. Dans le cas contraire, les données risquent d&#039;être éparpillées, voire fragmentées (les blocs d&#039;un même fichier sont alors répartis sur plusieurs cylindres non contigus). On ne peut cependant prévoir à l&#039;avance de quel espace aura besoin un répertoire racine. Il pourrait ne contenir que peu de fichiers ou, au contraire, une arborescence complète et chargée. Le répartiteur Orlov prend donc soin d&#039;éloigner le plus possible les uns des autres les répertoires racines, pour qu&#039;ils disposent d&#039;un espace suffisant où croître.&lt;br /&gt;
:Ajouter cet attribut à un répertoire permet au répartiteur de le traiter comme un répertoire racine, même s&#039;il n&#039;en est pas un, et de le placer  loin des autres répertoires racines. Il est donc utile avec des sous-arborescences de fichiers complexes et lourdes qui risqueraient d&#039;être fragmentées.&lt;br /&gt;
&lt;br /&gt;
==Commandes==&lt;br /&gt;
ll existe deux commandes pour accéder aux attributs étendus : &#039;&#039;lsattr&#039;&#039; (&#039;&#039;list attributes&#039;&#039;, « lister les attributs ») &#039;&#039;chattr&#039;&#039; (&#039;&#039;change attributes&#039;&#039;, « changer les attributs »). Toutes deux sont incluses dans le paquetage &#039;&#039;e2fsprogs&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===chattr===&lt;br /&gt;
Cette commande s&#039;utilise quasiment comme un &#039;&#039;chmod&#039;&#039; simplifié : en effet, les attributs ne peuvent être indiqués que sous forme symbolique (dont les codes sont donnés ci-dessus) et non au moyen d&#039;un éventuel nombre octal.&lt;br /&gt;
&lt;br /&gt;
Ainsi, pour ajouter ou donner un attibut, on utilise la commande suivie de &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; et du code ; par exemple, rendre un fichier « immuable » se fait avec la commande (en root) :&lt;br /&gt;
&amp;lt;code&amp;gt;chattr +i fichier&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Retirer un attribut requiert l&#039;opérateur &amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt;. La commande pour enlever l&#039;attribut « immuable » est donc : &lt;br /&gt;
&amp;lt;code&amp;gt;chattr -i fichier&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enfin, pour faire en sorte qu&#039;un fichier n&#039;ait que le ou les attributs mentionnés :&lt;br /&gt;
&amp;lt;code&amp;gt;chattr =i fichier&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La commande peut être utilisée de manière récursive au moyen de l&#039;option &amp;lt;code&amp;gt;-R&amp;lt;/code&amp;gt; : pour rendre toute une hiérarchie immuable, il suffit de : &lt;br /&gt;
&amp;lt;code&amp;gt;chattr -R + i répertoire/&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===lsattr===&lt;br /&gt;
Cette commande fonctionne comme &#039;&#039;ls&#039;&#039; et prend les options &amp;lt;code&amp;gt;-R&amp;lt;/code&amp;gt; (listage récursif), &amp;lt;code&amp;gt;-a&amp;lt;/code&amp;gt; (tout afficher) et &amp;lt;code&amp;gt;-d&amp;lt;/code&amp;gt; (lister les répertoires comme des fichiers), entre autres ; &#039;&#039;lsattr&#039;&#039; peut afficher des attributs qu&#039;on ne peut modifier avec &#039;&#039;chattr&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
L&#039;affichage est simple : chaque attribut du fichier est représenté par son code, une absence d&#039;attribut l&#039;étant par un &amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt;, à la manière du codage des permissions pratiqué par &#039;&#039;ls -l&#039;&#039; (&amp;lt;code&amp;gt;-rw-r--r--&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Ainsi : &lt;br /&gt;
&amp;lt;code&amp;gt;chattr +ASacDdijsTtu fichier&lt;br /&gt;
lsattr fichier&lt;br /&gt;
    suS-iadAc----j-tT fichier&amp;lt;/code&amp;gt;&lt;br /&gt;
L&#039;attribut &amp;lt;code&amp;gt;D&amp;lt;/code&amp;gt; n&#039;a pas été appliqué, puisque le fichier n&#039;est pas un répertoire. &lt;br /&gt;
&lt;br /&gt;
Les autres valeurs que peut indiquer &#039;&#039;lsattr&#039;&#039; s&#039;intercalent dans les espaces vacants : &#039;&#039;I&#039;&#039; (fichier dépendant d&#039;un répertoire indexé par HTree), &#039;&#039;E&#039;&#039; (fichier dont la compression est erronée ; dépend directement de l&#039;attribut &#039;&#039;&amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt;ompressed&#039;&#039;), &#039;&#039;X&#039;&#039; (fichier compressé dont une partie des données brutes peut être consultée directement ; dépend de &amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt;) et &#039;&#039;Z&#039;&#039; (fichier compressé corrompu ; &#039;&amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt;). Ce sont des valeurs non modifiables ajoutées automatiquement aux fichiers. Les trois dernières ne sont toujours pas implémentées.&lt;br /&gt;
&lt;br /&gt;
Noter que &#039;&#039;ls&#039;&#039; n&#039;indique pas la présence éventuelle d&#039;attributs étendus et que &#039;&#039;find&#039;&#039; ne peut rechercher des fichiers selon ce critère.&lt;br /&gt;
&lt;br /&gt;
===ls, cp, mv===&lt;br /&gt;
Les commandes classiques de listage, copie et déplacement ne gèrent pas les attributs étendus, soit qu&#039;elles ne les affichent pas (&#039;&#039;ls&#039;&#039;), soit qu&#039;elles les ignorent.&lt;br /&gt;
&lt;br /&gt;
===Sauvegarde des données===&lt;br /&gt;
Sauvegarder des données dotées d&#039;attributs étendus ne peut se faire correctement que si : &lt;br /&gt;
* le système de fichiers de stockage gère lui-même les attributs ; &lt;br /&gt;
* le logiciel de sauvegarde est compatible avec les attributs.&lt;br /&gt;
&lt;br /&gt;
Dans le second cas, il convient de ne pas utiliser &#039;&#039;cpio&#039;&#039;, &#039;&#039;tar&#039;&#039; ou &#039;&#039;rsync&#039;&#039;, par exemple, mais une application comme &#039;&#039;star&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Copy|28.10.05|Vincent Ramos|FDL}}&lt;/div&gt;</summary>
		<author><name>Vincent Ramos</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Gestion_des_ACL&amp;diff=10181</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=10181"/>
		<updated>2005-10-28T09:16:09Z</updated>

		<summary type="html">&lt;p&gt;Vincent Ramos : /* Noyau */ typo&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 -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 -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.suse.de/~agruen/acl/linux-acls/online/ POSIX Access Control Lists on Linux].&lt;br /&gt;
&lt;br /&gt;
{{Copy|27.10.05|Vincent Ramos|FDL}}&lt;/div&gt;</summary>
		<author><name>Vincent Ramos</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Discussion:Gestion_des_ACL&amp;diff=10180</id>
		<title>Discussion:Gestion des ACL</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Discussion:Gestion_des_ACL&amp;diff=10180"/>
		<updated>2005-10-28T09:11:58Z</updated>

		<summary type="html">&lt;p&gt;Vincent Ramos : → Mike-m&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Petite question: ne devrait-on pas dire &amp;quot;une ACL&amp;quot; vue qu&#039;il s&#039;agit d&#039;une liste de contrôle d&#039;accès ? [[Utilisateur:Fred|Fred]]&lt;br /&gt;
:Je me suis posé la question : vu qu&#039;il s&#039;agit d&#039;un(e) &#039;&#039;Acces Control List&#039;&#039; et qu&#039;il n&#039;y a pas de genre en anglais (dans ce cas de figure-là), il n&#039;y a pas de réponse toute faite, à moins de se dire qu&#039;on va l&#039;utiliser au féminin parce qu&#039;il y a un lien évident qu&#039;on peut faire entre &#039;&#039;List&#039;&#039; et &#039;&#039;liste&#039;&#039;.&lt;br /&gt;
:Dans ce cas, c&#039;est un choix qui ne repose sur rien de grammatical mais sur une impression d&#039;euphonie. Si le féminin te semble plus compréhensible, il n&#039;y a qu&#039;à changer. [[Utilisateur:Vincent Ramos|Vincent Ramos]] 26 oct 2005 à 11:24 (CEST)&lt;br /&gt;
::petite remarque, on dit aussi bien &amp;quot;un gui&amp;quot; que &amp;quot;une gui&amp;quot; (google référence des milliers de page pour ces deux expressions), personnellement je suis un partisant du &amp;quot;une gui&amp;quot; car interface c&#039;est un mot féminin --[[Utilisateur:Mike-m|Mike-m]] 28 oct 2005 à 05:24:46 (CEST)&lt;br /&gt;
:::J&#039;avais entre temps changé tous mes &#039;&#039;un ACL&#039;&#039; en &#039;&#039;une ACL&#039;&#039;. [[Utilisateur:Vincent Ramos|Vincent Ramos]] 28 oct 2005 à 11:11 (CEST)&lt;/div&gt;</summary>
		<author><name>Vincent Ramos</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Attributs_%C3%A9tendus&amp;diff=10167</id>
		<title>Attributs étendus</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Attributs_%C3%A9tendus&amp;diff=10167"/>
		<updated>2005-10-28T01:28:41Z</updated>

		<summary type="html">&lt;p&gt;Vincent Ramos : /* chattr */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Les [[système de fichiers|systèmes de fichiers]] &#039;&#039;ext2&#039;&#039; et &#039;&#039;ext3&#039;&#039; (ainsi que &#039;&#039;reiserfs&#039;&#039; dans certaines conditions) offrent la possibilité de donner à des fichiers (fichiers réels ou répertoires) des &#039;&#039;&#039;attributs étendus&#039;&#039;&#039; qui s&#039;ajoutent aux [[permissions|permissions classiques POSIX.1]], éventuellement complétées par les [[ACL|permissions étendues ACL]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cadre type=&amp;quot;alert&amp;quot;&amp;gt;Seuls ces systèmes de fichiers offrant ces attributs, il n&#039;est pas prudent ─ en terme de sécurité ─ de s&#039;appuyer lourdement sur leur présence si l&#039;on est amené à transférer fréquemment des données d&#039;un système de fichiers &#039;&#039;ext&#039;&#039; à un autre. D&#039;autre part, il convient de tester ces possibilités : toutes les versions du noyau n&#039;en tiennent pas compte de la même manière.&amp;lt;/cadre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Mise en place==&lt;br /&gt;
Il n&#039;y a rien à faire pour des partitions en &#039;&#039;ext2&#039;&#039; ou &#039;&#039;ext3&#039;&#039;, qui respectent nativement les attributs étendus.&lt;br /&gt;
&lt;br /&gt;
Chose assez peu connue, cependant, le système de fichiers &#039;&#039;reiserfs&#039;&#039; peut respecter les attributs étendus, à condition d&#039;[[fstab|être monté]] avec l&#039;option idoine &amp;lt;code&amp;gt;attrs&amp;lt;/code&amp;gt;. Pour ce faire, les commandes suivantes sont appliquées : &lt;br /&gt;
* sur une partition non encore montée : &amp;lt;code&amp;gt;mount -t reiserfs -o attrs /dev/partition /point/de/montage&amp;lt;/code&amp;gt; ; &lt;br /&gt;
* sur une partition déjà montée : &amp;lt;code&amp;gt;mount -o attrs /point/de/montage&amp;lt;/code&amp;gt; (remontage à la volée).&lt;br /&gt;
&lt;br /&gt;
Pour que la prise en compte soit effective à chaque montage automatique (le cas échéant), il faut ajouter l&#039;option dans &#039;&#039;[[fstab|/etc/fstab]]&#039;&#039;. Par exemple : &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
/dev/hda1       /               reiserfs    defaults,acl,attrs 0       1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enfin, on peut recompiler son noyau avec l&#039;option &amp;lt;code&amp;gt;CONFIG_REISERFS_FS_XATTR = y&amp;lt;/code&amp;gt; pour que le mode &amp;lt;code&amp;gt;attr&amp;lt;/code&amp;gt; soit automatiquement appliqué lors du montage d&#039;une partition en &#039;&#039;reiserfs&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cadre type=&amp;quot;note&amp;quot;&amp;gt;Noter que des fichiers d&#039;une partition en &#039;&#039;reiserfs&#039;&#039; montée sans l&#039;option &amp;lt;code&amp;gt;attrs&amp;lt;/code&amp;gt; (ou la recompilation du noyau) peuvent recevoir des attributs étendus : ils seront bien enregistrés mais n&#039;auront aucun effet. La commande de modification d&#039;attributs, &#039;&#039;chattr&#039;&#039;, ne renverra donc aucun message d&#039;erreur sans pour autant que les attributs soient pris en compte. Ce détail peut avoir des répercussion pour la sécurité du système : on peut, à tort, croire protéger des fichiers.&amp;lt;/cadre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Types d&#039;attributs==&lt;br /&gt;
Selon la norme POSIX.1, tout fichier possède les permissions en lecture, écriture et exécution. On peut leur adjoindre des attributs supplémentaires, qui s&#039;imposent à tous les utilisateurs (dont root, qui peut cependant annuler ces attributs) quand ils modifient les actions qu&#039;on peut avoir sur eux. Certains attributs sont encore expérimentaux (octobre 2005) et nécessitent de patcher le noyau pour qu&#039;ils aient un effet réel. &lt;br /&gt;
;append only (a), « ajouter seulement » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Protège le fichier contre la suppression de contenu : on ne peut que lui en ajouter. &lt;br /&gt;
;compressed (c), « compressé » ─ &#039;&#039;expérimental&#039;&#039;&lt;br /&gt;
:Le fichier est automatiquement compressé ─ si c&#039;est utile, et avec un format de compression le plus efficace ─ quand il est stocké. La décompression lors de la lecture et la compression des données ajoutées au fichier par la suite se font à la volée, de manière transparente pour l&#039;utilisateur (la commande &amp;lt;code&amp;gt;ls -l&amp;lt;/code&amp;gt;, par exemple, montre la taille décompressée). &lt;br /&gt;
:Cet attribut appliqué à un répertoire ne le compresse pas mais fait se compresser automatiquement tout nouveau fichier qu&#039;on y crée.&lt;br /&gt;
;no dump (d), « pas de sauvegarde »&lt;br /&gt;
:Un fichier ainsi marqué sera ignoré par la commande de sauvegarde &#039;&#039;dump&#039;&#039; (qui ne fonctionne que pour &#039;&#039;ext2&#039;&#039; et &#039;&#039;ext3&#039;&#039;). Cet attribut est utile pour empêcher la sauvegarde par &#039;&#039;dump&#039;&#039; d&#039;un fichier ou répertoire situés dans un système de fichiers monté avec l&#039;option &amp;lt;code&amp;gt;dump&amp;lt;/code&amp;gt; positionnée à &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; (cf &#039;&#039;[[fstab]]&#039;&#039;).&lt;br /&gt;
;immutable (i), « immuable » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Protège le fichier contre toute modification (suppression, modification, déplacement, changements de permissions), même par root, et empêche qu&#039;on crée un lien vers lui. Seule la modification des attributs étendus est permise à son propriétaire et seul root peut enlever l&#039;attribut « immuable » d&#039;un fichier.&lt;br /&gt;
:Cet attribut est sans doute l&#039;un des plus intéressants.&lt;br /&gt;
;data journalling (j), « journalisation des données » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Cet attribut n&#039;est utile qu&#039;avec une partition en &#039;&#039;ext3&#039;&#039; montée avec les options de journalisation des données &amp;lt;code&amp;gt;data=ordered&amp;lt;/code&amp;gt; (montage par défaut) ou &amp;lt;code&amp;gt;data=writeback&amp;lt;/code&amp;gt; pour simuler une journalisation du type &amp;lt;code&amp;gt;data=journal&amp;lt;/code&amp;gt;, où les données sont écrites dans le journal avant de l&#039;être dans le fichier lui-même. Consulter &amp;lt;code&amp;gt;man mount 8&amp;lt;/code&amp;gt; pour plus de détails sur les mécanismes de journalisation d&#039;&#039;&#039;ext3&#039;&#039;. &lt;br /&gt;
:Sur une partition &#039;&#039;ext3&#039;&#039; en mode &amp;lt;code&amp;gt;data=journal&amp;lt;/code&amp;gt;, cet attribut est ignoré, de même que sur les partitions en &#039;&#039;ext2&#039;&#039; et &#039;&#039;reiserfs&#039;&#039;, le premier type n&#039;étant pas journalisé, le second l&#039;étant d&#039;une manière incompatible.&lt;br /&gt;
;secure deletion (s), « effacement sécurisé »  ─ &#039;&#039;expérimental&#039;&#039;&lt;br /&gt;
:Un fichier portant cet attribut est non seulement « effacé » mais en plus les blocs qu&#039;il occupait dans le système de fichiers sont recouverts de zéros pour éviter qu&#039;on puisse récupérer les données malgré l&#039;effacement. &lt;br /&gt;
:Normalement, effacer un fichier consiste seulement à détruire toute référence vers l&#039;espace occupé par les données de ce fichier dans la partition. Il n&#039;est cependant pas question de détruire physiquement les données elles-mêmes, sauf si le fichier possède cet attribut, auquel cas non seulement il n&#039;est plus accessible mais en plus tous ses bits sont réécrits.&lt;br /&gt;
;no tail-merging (t)&lt;br /&gt;
;undeletable (u), « ineffaçable » ─ &#039;&#039;&#039;expérimental&#039;&#039;&#039;&lt;br /&gt;
:Lors d&#039;un effacement, les références vers l&#039;espace du système de fichiers qui contient les données sont détruites, mais pas les données. Sans ces références, cependant, l&#039;espace anciennement réservé peut être utilisé par des fichiers nouvellement créés ou ayant été augmentés. Dans ce cas, il n&#039;est plus possible de récupérer les données en question. &lt;br /&gt;
:L&#039;attribut « ineffaçable » permet de préserver les blocs qui contenaient les données de façon à ce qu&#039;on puisse les récupérer si besoin est. L&#039;espace-disque n&#039;est donc pas libéré.&lt;br /&gt;
;no atime updates (A), « pas de mise à jour de la date de dernier accès »&lt;br /&gt;
:À chaque fois qu&#039;on accède à un fichier, la date du dernier accès est modifiée. Dans un système de fichiers dans lequel existent de nombreux fichiers auxquels on accède souvent (c&#039;est le cas pour les serveurs de &#039;&#039;news&#039;&#039;), ces modifications peuvent ralentir le système. &lt;br /&gt;
:Donner à un fichier l&#039;attribut &#039;&#039;no atime updates&#039;&#039; permet d&#039;éviter ce problème. Noter que la même option existe lorsque l&#039;on monte une partition dans l&#039;arborescence globale (&amp;lt;code&amp;gt;mount -o noatime&amp;lt;/code&amp;gt;), option que l&#039;on peut inscrire dans [[fstab|/etc/fstab]].&lt;br /&gt;
;synchronous directory updates (D), « mise à jour synchone des répertoires »&lt;br /&gt;
;synchronous updates (S), « mise à jour synchrone »&lt;br /&gt;
:Ces deux attributs ont un effet similaire. Le premier sert aux répertoires, le second aux fichiers. Les données des répertoires et fichiers concernés sont mises à jour dès qu&#039;une modification a eu lieu (et non en différé, comme c&#039;est le cas par défaut pour &#039;&#039;ext2&#039;&#039; et &#039;&#039;ext3&#039;&#039;). C&#039;est l&#039;équivalent des options de montage &amp;lt;code&amp;gt;mount -o sync&amp;lt;/code&amp;gt; et &amp;lt;code&amp;gt;mount -o dirsync&amp;lt;/code&amp;gt; (qu&#039;on peut aussi passer dans &#039;&#039;fstab&#039;&#039;) mais pour une sous-partie de l&#039;arborescence et non la partition entière.&lt;br /&gt;
;top of directory hierarchy (T), « répertoire racine » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Cet attribut indique au répartiteur de blocs Orlov (ou &#039;&#039;[http://lwn.net/Articles/14633/ Orlov block allocator]&#039;&#039;, utilisé par le noyau Linux pour les systèmes de fichiers &#039;&#039;ext2&#039;&#039; et &#039;&#039;ext3&#039;&#039; depuis la version 2.5.46) que le répertoire concerné doit être considéré comme un répertoire racine de la hiérarchie des répertoires. &lt;br /&gt;
:L&#039;allocateur de blocs est un processus propre au système de fichier permettant de répartir les blocs de données des fichiers dans l&#039;espace disponible tout en garantissant une qu&#039;il ne se produira pas une trop grande fragmentation. Pour cela, on place généralement dans un même groupe de cylindres du disque dur les blocs de fichiers dépendant d&#039;un  même répertoire. Dans le cas contraire, les données risquent d&#039;être éparpillées, voire fragmentées (les blocs d&#039;un même fichier sont alors répartis sur plusieurs cylindres non contigus). On ne peut cependant prévoir à l&#039;avance de quel espace aura besoin un répertoire racine. Il pourrait ne contenir que peu de fichiers ou, au contraire, une arborescence complète et chargée. Le répartiteur Orlov prend donc soin d&#039;éloigner le plus possible les uns des autres les répertoires racines, pour qu&#039;ils disposent d&#039;un espace suffisant où croître.&lt;br /&gt;
:Ajouter cet attribut à un répertoire permet au répartiteur de le traiter comme un répertoire racine, même s&#039;il n&#039;en est pas un, et de le placer  loin des autres répertoires racines. Il est donc utile avec des sous-arborescences de fichiers complexes et lourdes qui risqueraient d&#039;être fragmentées.&lt;br /&gt;
&lt;br /&gt;
==Commandes==&lt;br /&gt;
ll existe deux commandes pour accéder aux attributs étendus : &#039;&#039;lsattr&#039;&#039; (&#039;&#039;list attributes&#039;&#039;, « lister les attributs ») &#039;&#039;chattr&#039;&#039; (&#039;&#039;change attributes&#039;&#039;, « changer les attributs »). Toutes deux sont incluses dans le paquetage &#039;&#039;e2fsprogs&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===chattr===&lt;br /&gt;
Cette commande s&#039;utilise quasiment comme un &#039;&#039;chmod&#039;&#039; simplifié : en effet, les attributs ne peuvent être indiqués que sous forme symbolique (dont les codes sont donnés ci-dessus) et non au moyen d&#039;un éventuel nombre octal.&lt;br /&gt;
&lt;br /&gt;
Ainsi, pour ajouter ou donner un attibut, on utilise la commande suivie de &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; et du code ; par exemple, rendre un fichier « immuable » se fait avec la commande (en root) :&lt;br /&gt;
&amp;lt;code&amp;gt;chattr +i fichier&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Retirer un attribut requiert l&#039;opérateur &amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt;. La commande pour enlever l&#039;attribut « immuable » est donc : &lt;br /&gt;
&amp;lt;code&amp;gt;chattr -i fichier&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enfin, pour faire en sorte qu&#039;un fichier n&#039;ait que le ou les attributs mentionnés :&lt;br /&gt;
&amp;lt;code&amp;gt;chattr =i fichier&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La commande peut être utilisée de manière récursive au moyen de l&#039;option &amp;lt;code&amp;gt;-R&amp;lt;/code&amp;gt; : pour rendre toute une hiérarchie immuable, il suffit de : &lt;br /&gt;
&amp;lt;code&amp;gt;chattr -R + i répertoire/&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===lsattr===&lt;br /&gt;
Cette commande fonctionne comme &#039;&#039;ls&#039;&#039; et prend les options &amp;lt;code&amp;gt;-R&amp;lt;/code&amp;gt; (listage récursif), &amp;lt;code&amp;gt;-a&amp;lt;/code&amp;gt; (tout afficher) et &amp;lt;code&amp;gt;-d&amp;lt;/code&amp;gt; (lister les répertoires comme des fichiers), entre autres ; &#039;&#039;lsattr&#039;&#039; peut afficher des attributs qu&#039;on ne peut modifier avec &#039;&#039;chattr&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
L&#039;affichage est simple : chaque attribut du fichier est représenté par son code, une absence d&#039;attribut l&#039;étant par un &amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt;, à la manière du codage des permissions pratiqué par &#039;&#039;ls -l&#039;&#039; (&amp;lt;code&amp;gt;-rw-r--r--&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Ainsi : &lt;br /&gt;
&amp;lt;code&amp;gt;chattr +ASacDdijsTtu fichier&lt;br /&gt;
lsattr fichier&lt;br /&gt;
    suS-iadAc----j-tT fichier&amp;lt;/code&amp;gt;&lt;br /&gt;
L&#039;attribut &amp;lt;code&amp;gt;D&amp;lt;/code&amp;gt; n&#039;a pas été appliqué, puisque le fichier n&#039;est pas un répertoire. &lt;br /&gt;
&lt;br /&gt;
Les autres valeurs que peut indiquer &#039;&#039;lsattr&#039;&#039; s&#039;intercalent dans les espaces vacants : &#039;&#039;I&#039;&#039; (fichier dépendant d&#039;un répertoire indexé par HTree), &#039;&#039;E&#039;&#039; (fichier dont la compression est erronée ; dépend directement de l&#039;attribut &#039;&#039;&amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt;ompressed&#039;&#039;), &#039;&#039;X&#039;&#039; (fichier compressé dont une partie des données brutes peut être consultée directement ; dépend de &amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt;) et &#039;&#039;Z&#039;&#039; (fichier compressé corrompu ; &#039;&amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt;). Ce sont des valeurs non modifiables ajoutées automatiquement aux fichiers. Les trois dernières ne sont toujours pas implémentées.&lt;br /&gt;
&lt;br /&gt;
Noter que &#039;&#039;ls&#039;&#039; n&#039;indique pas la présence éventuelle d&#039;attributs étendus et que &#039;&#039;find&#039;&#039; ne peut rechercher des fichiers selon ce critère.&lt;br /&gt;
&lt;br /&gt;
===ls, cp, mv===&lt;br /&gt;
Les commandes classiques de listage, copie et déplacement ne gèrent pas les attributs étendus, soit qu&#039;elles ne les affichent pas (&#039;&#039;ls&#039;&#039;), soit qu&#039;elles les ignorent.&lt;br /&gt;
&lt;br /&gt;
===Sauvegarde des données===&lt;br /&gt;
Sauvegarder des données dotées d&#039;attributs étendus ne peut se faire correctement que si : &lt;br /&gt;
* le système de fichiers de stockage gère lui-même les attributs ; &lt;br /&gt;
* le logiciel de sauvegarde est compatible avec les attributs.&lt;br /&gt;
&lt;br /&gt;
Dans le second cas, il convient de ne pas utiliser &#039;&#039;cpio&#039;&#039;, &#039;&#039;tar&#039;&#039; ou &#039;&#039;rsync&#039;&#039;, par exemple.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Copy|28.10.05|Vincent Ramos|FDL}}&lt;/div&gt;</summary>
		<author><name>Vincent Ramos</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Attributs_%C3%A9tendus&amp;diff=10166</id>
		<title>Attributs étendus</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Attributs_%C3%A9tendus&amp;diff=10166"/>
		<updated>2005-10-28T01:25:51Z</updated>

		<summary type="html">&lt;p&gt;Vincent Ramos : /* lsattr */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Les [[système de fichiers|systèmes de fichiers]] &#039;&#039;ext2&#039;&#039; et &#039;&#039;ext3&#039;&#039; (ainsi que &#039;&#039;reiserfs&#039;&#039; dans certaines conditions) offrent la possibilité de donner à des fichiers (fichiers réels ou répertoires) des &#039;&#039;&#039;attributs étendus&#039;&#039;&#039; qui s&#039;ajoutent aux [[permissions|permissions classiques POSIX.1]], éventuellement complétées par les [[ACL|permissions étendues ACL]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cadre type=&amp;quot;alert&amp;quot;&amp;gt;Seuls ces systèmes de fichiers offrant ces attributs, il n&#039;est pas prudent ─ en terme de sécurité ─ de s&#039;appuyer lourdement sur leur présence si l&#039;on est amené à transférer fréquemment des données d&#039;un système de fichiers &#039;&#039;ext&#039;&#039; à un autre. D&#039;autre part, il convient de tester ces possibilités : toutes les versions du noyau n&#039;en tiennent pas compte de la même manière.&amp;lt;/cadre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Mise en place==&lt;br /&gt;
Il n&#039;y a rien à faire pour des partitions en &#039;&#039;ext2&#039;&#039; ou &#039;&#039;ext3&#039;&#039;, qui respectent nativement les attributs étendus.&lt;br /&gt;
&lt;br /&gt;
Chose assez peu connue, cependant, le système de fichiers &#039;&#039;reiserfs&#039;&#039; peut respecter les attributs étendus, à condition d&#039;[[fstab|être monté]] avec l&#039;option idoine &amp;lt;code&amp;gt;attrs&amp;lt;/code&amp;gt;. Pour ce faire, les commandes suivantes sont appliquées : &lt;br /&gt;
* sur une partition non encore montée : &amp;lt;code&amp;gt;mount -t reiserfs -o attrs /dev/partition /point/de/montage&amp;lt;/code&amp;gt; ; &lt;br /&gt;
* sur une partition déjà montée : &amp;lt;code&amp;gt;mount -o attrs /point/de/montage&amp;lt;/code&amp;gt; (remontage à la volée).&lt;br /&gt;
&lt;br /&gt;
Pour que la prise en compte soit effective à chaque montage automatique (le cas échéant), il faut ajouter l&#039;option dans &#039;&#039;[[fstab|/etc/fstab]]&#039;&#039;. Par exemple : &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
/dev/hda1       /               reiserfs    defaults,acl,attrs 0       1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enfin, on peut recompiler son noyau avec l&#039;option &amp;lt;code&amp;gt;CONFIG_REISERFS_FS_XATTR = y&amp;lt;/code&amp;gt; pour que le mode &amp;lt;code&amp;gt;attr&amp;lt;/code&amp;gt; soit automatiquement appliqué lors du montage d&#039;une partition en &#039;&#039;reiserfs&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cadre type=&amp;quot;note&amp;quot;&amp;gt;Noter que des fichiers d&#039;une partition en &#039;&#039;reiserfs&#039;&#039; montée sans l&#039;option &amp;lt;code&amp;gt;attrs&amp;lt;/code&amp;gt; (ou la recompilation du noyau) peuvent recevoir des attributs étendus : ils seront bien enregistrés mais n&#039;auront aucun effet. La commande de modification d&#039;attributs, &#039;&#039;chattr&#039;&#039;, ne renverra donc aucun message d&#039;erreur sans pour autant que les attributs soient pris en compte. Ce détail peut avoir des répercussion pour la sécurité du système : on peut, à tort, croire protéger des fichiers.&amp;lt;/cadre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Types d&#039;attributs==&lt;br /&gt;
Selon la norme POSIX.1, tout fichier possède les permissions en lecture, écriture et exécution. On peut leur adjoindre des attributs supplémentaires, qui s&#039;imposent à tous les utilisateurs (dont root, qui peut cependant annuler ces attributs) quand ils modifient les actions qu&#039;on peut avoir sur eux. Certains attributs sont encore expérimentaux (octobre 2005) et nécessitent de patcher le noyau pour qu&#039;ils aient un effet réel. &lt;br /&gt;
;append only (a), « ajouter seulement » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Protège le fichier contre la suppression de contenu : on ne peut que lui en ajouter. &lt;br /&gt;
;compressed (c), « compressé » ─ &#039;&#039;expérimental&#039;&#039;&lt;br /&gt;
:Le fichier est automatiquement compressé ─ si c&#039;est utile, et avec un format de compression le plus efficace ─ quand il est stocké. La décompression lors de la lecture et la compression des données ajoutées au fichier par la suite se font à la volée, de manière transparente pour l&#039;utilisateur (la commande &amp;lt;code&amp;gt;ls -l&amp;lt;/code&amp;gt;, par exemple, montre la taille décompressée). &lt;br /&gt;
:Cet attribut appliqué à un répertoire ne le compresse pas mais fait se compresser automatiquement tout nouveau fichier qu&#039;on y crée.&lt;br /&gt;
;no dump (d), « pas de sauvegarde »&lt;br /&gt;
:Un fichier ainsi marqué sera ignoré par la commande de sauvegarde &#039;&#039;dump&#039;&#039; (qui ne fonctionne que pour &#039;&#039;ext2&#039;&#039; et &#039;&#039;ext3&#039;&#039;). Cet attribut est utile pour empêcher la sauvegarde par &#039;&#039;dump&#039;&#039; d&#039;un fichier ou répertoire situés dans un système de fichiers monté avec l&#039;option &amp;lt;code&amp;gt;dump&amp;lt;/code&amp;gt; positionnée à &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; (cf &#039;&#039;[[fstab]]&#039;&#039;).&lt;br /&gt;
;immutable (i), « immuable » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Protège le fichier contre toute modification (suppression, modification, déplacement, changements de permissions), même par root, et empêche qu&#039;on crée un lien vers lui. Seule la modification des attributs étendus est permise à son propriétaire et seul root peut enlever l&#039;attribut « immuable » d&#039;un fichier.&lt;br /&gt;
:Cet attribut est sans doute l&#039;un des plus intéressants.&lt;br /&gt;
;data journalling (j), « journalisation des données » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Cet attribut n&#039;est utile qu&#039;avec une partition en &#039;&#039;ext3&#039;&#039; montée avec les options de journalisation des données &amp;lt;code&amp;gt;data=ordered&amp;lt;/code&amp;gt; (montage par défaut) ou &amp;lt;code&amp;gt;data=writeback&amp;lt;/code&amp;gt; pour simuler une journalisation du type &amp;lt;code&amp;gt;data=journal&amp;lt;/code&amp;gt;, où les données sont écrites dans le journal avant de l&#039;être dans le fichier lui-même. Consulter &amp;lt;code&amp;gt;man mount 8&amp;lt;/code&amp;gt; pour plus de détails sur les mécanismes de journalisation d&#039;&#039;&#039;ext3&#039;&#039;. &lt;br /&gt;
:Sur une partition &#039;&#039;ext3&#039;&#039; en mode &amp;lt;code&amp;gt;data=journal&amp;lt;/code&amp;gt;, cet attribut est ignoré, de même que sur les partitions en &#039;&#039;ext2&#039;&#039; et &#039;&#039;reiserfs&#039;&#039;, le premier type n&#039;étant pas journalisé, le second l&#039;étant d&#039;une manière incompatible.&lt;br /&gt;
;secure deletion (s), « effacement sécurisé »  ─ &#039;&#039;expérimental&#039;&#039;&lt;br /&gt;
:Un fichier portant cet attribut est non seulement « effacé » mais en plus les blocs qu&#039;il occupait dans le système de fichiers sont recouverts de zéros pour éviter qu&#039;on puisse récupérer les données malgré l&#039;effacement. &lt;br /&gt;
:Normalement, effacer un fichier consiste seulement à détruire toute référence vers l&#039;espace occupé par les données de ce fichier dans la partition. Il n&#039;est cependant pas question de détruire physiquement les données elles-mêmes, sauf si le fichier possède cet attribut, auquel cas non seulement il n&#039;est plus accessible mais en plus tous ses bits sont réécrits.&lt;br /&gt;
;no tail-merging (t)&lt;br /&gt;
;undeletable (u), « ineffaçable » ─ &#039;&#039;&#039;expérimental&#039;&#039;&#039;&lt;br /&gt;
:Lors d&#039;un effacement, les références vers l&#039;espace du système de fichiers qui contient les données sont détruites, mais pas les données. Sans ces références, cependant, l&#039;espace anciennement réservé peut être utilisé par des fichiers nouvellement créés ou ayant été augmentés. Dans ce cas, il n&#039;est plus possible de récupérer les données en question. &lt;br /&gt;
:L&#039;attribut « ineffaçable » permet de préserver les blocs qui contenaient les données de façon à ce qu&#039;on puisse les récupérer si besoin est. L&#039;espace-disque n&#039;est donc pas libéré.&lt;br /&gt;
;no atime updates (A), « pas de mise à jour de la date de dernier accès »&lt;br /&gt;
:À chaque fois qu&#039;on accède à un fichier, la date du dernier accès est modifiée. Dans un système de fichiers dans lequel existent de nombreux fichiers auxquels on accède souvent (c&#039;est le cas pour les serveurs de &#039;&#039;news&#039;&#039;), ces modifications peuvent ralentir le système. &lt;br /&gt;
:Donner à un fichier l&#039;attribut &#039;&#039;no atime updates&#039;&#039; permet d&#039;éviter ce problème. Noter que la même option existe lorsque l&#039;on monte une partition dans l&#039;arborescence globale (&amp;lt;code&amp;gt;mount -o noatime&amp;lt;/code&amp;gt;), option que l&#039;on peut inscrire dans [[fstab|/etc/fstab]].&lt;br /&gt;
;synchronous directory updates (D), « mise à jour synchone des répertoires »&lt;br /&gt;
;synchronous updates (S), « mise à jour synchrone »&lt;br /&gt;
:Ces deux attributs ont un effet similaire. Le premier sert aux répertoires, le second aux fichiers. Les données des répertoires et fichiers concernés sont mises à jour dès qu&#039;une modification a eu lieu (et non en différé, comme c&#039;est le cas par défaut pour &#039;&#039;ext2&#039;&#039; et &#039;&#039;ext3&#039;&#039;). C&#039;est l&#039;équivalent des options de montage &amp;lt;code&amp;gt;mount -o sync&amp;lt;/code&amp;gt; et &amp;lt;code&amp;gt;mount -o dirsync&amp;lt;/code&amp;gt; (qu&#039;on peut aussi passer dans &#039;&#039;fstab&#039;&#039;) mais pour une sous-partie de l&#039;arborescence et non la partition entière.&lt;br /&gt;
;top of directory hierarchy (T), « répertoire racine » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Cet attribut indique au répartiteur de blocs Orlov (ou &#039;&#039;[http://lwn.net/Articles/14633/ Orlov block allocator]&#039;&#039;, utilisé par le noyau Linux pour les systèmes de fichiers &#039;&#039;ext2&#039;&#039; et &#039;&#039;ext3&#039;&#039; depuis la version 2.5.46) que le répertoire concerné doit être considéré comme un répertoire racine de la hiérarchie des répertoires. &lt;br /&gt;
:L&#039;allocateur de blocs est un processus propre au système de fichier permettant de répartir les blocs de données des fichiers dans l&#039;espace disponible tout en garantissant une qu&#039;il ne se produira pas une trop grande fragmentation. Pour cela, on place généralement dans un même groupe de cylindres du disque dur les blocs de fichiers dépendant d&#039;un  même répertoire. Dans le cas contraire, les données risquent d&#039;être éparpillées, voire fragmentées (les blocs d&#039;un même fichier sont alors répartis sur plusieurs cylindres non contigus). On ne peut cependant prévoir à l&#039;avance de quel espace aura besoin un répertoire racine. Il pourrait ne contenir que peu de fichiers ou, au contraire, une arborescence complète et chargée. Le répartiteur Orlov prend donc soin d&#039;éloigner le plus possible les uns des autres les répertoires racines, pour qu&#039;ils disposent d&#039;un espace suffisant où croître.&lt;br /&gt;
:Ajouter cet attribut à un répertoire permet au répartiteur de le traiter comme un répertoire racine, même s&#039;il n&#039;en est pas un, et de le placer  loin des autres répertoires racines. Il est donc utile avec des sous-arborescences de fichiers complexes et lourdes qui risqueraient d&#039;être fragmentées.&lt;br /&gt;
&lt;br /&gt;
==Commandes==&lt;br /&gt;
ll existe deux commandes pour accéder aux attributs étendus : &#039;&#039;lsattr&#039;&#039; (&#039;&#039;list attributes&#039;&#039;, « lister les attributs ») &#039;&#039;chattr&#039;&#039; (&#039;&#039;change attributes&#039;&#039;, « changer les attributs »). Toutes deux sont incluses dans le paquetage &#039;&#039;e2fsprogs&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===chattr===&lt;br /&gt;
Cette commande s&#039;utilise quasiment comme un &#039;&#039;chmod&#039;&#039; simplifié : en effet, les attributs ne peuvent être indiqués que sous forme symbolique (dont les codes sont donnés ci-dessus) et non au moyen d&#039;un éventuel nombre octal.&lt;br /&gt;
&lt;br /&gt;
Ainsi, pour donner un attibut, on utilise la commande suivie de + et du code ; par exemple, rendre un fichier « immuable » se fait avec la commande (en root) :&lt;br /&gt;
&amp;lt;code&amp;gt;chattr +i fichier&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Retirer un attribut requiert l&#039;opérateur &amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt;. La commande pour enlever l&#039;attribut « immuable » est donc : &lt;br /&gt;
&amp;lt;code&amp;gt;chattr -i fichier&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enfin, pour faire en sorte qu&#039;un fichier n&#039;ait que l&#039;attribut « immuable » :&lt;br /&gt;
&amp;lt;code&amp;gt;chattr =i fichier&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La commande peut être utilisée de manière récursive au moyen de l&#039;option &amp;lt;code&amp;gt;-R&amp;lt;/code&amp;gt; : pour rendre toute une hiérarchie immuable, il suffit de : &lt;br /&gt;
&amp;lt;code&amp;gt;chattr -R + i répertoire/&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===lsattr===&lt;br /&gt;
Cette commande fonctionne comme &#039;&#039;ls&#039;&#039; et prend les options &amp;lt;code&amp;gt;-R&amp;lt;/code&amp;gt; (listage récursif), &amp;lt;code&amp;gt;-a&amp;lt;/code&amp;gt; (tout afficher) et &amp;lt;code&amp;gt;-d&amp;lt;/code&amp;gt; (lister les répertoires comme des fichiers), entre autres ; &#039;&#039;lsattr&#039;&#039; peut afficher des attributs qu&#039;on ne peut modifier avec &#039;&#039;chattr&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
L&#039;affichage est simple : chaque attribut du fichier est représenté par son code, une absence d&#039;attribut l&#039;étant par un &amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt;, à la manière du codage des permissions pratiqué par &#039;&#039;ls -l&#039;&#039; (&amp;lt;code&amp;gt;-rw-r--r--&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Ainsi : &lt;br /&gt;
&amp;lt;code&amp;gt;chattr +ASacDdijsTtu fichier&lt;br /&gt;
lsattr fichier&lt;br /&gt;
    suS-iadAc----j-tT fichier&amp;lt;/code&amp;gt;&lt;br /&gt;
L&#039;attribut &amp;lt;code&amp;gt;D&amp;lt;/code&amp;gt; n&#039;a pas été appliqué, puisque le fichier n&#039;est pas un répertoire. &lt;br /&gt;
&lt;br /&gt;
Les autres valeurs que peut indiquer &#039;&#039;lsattr&#039;&#039; s&#039;intercalent dans les espaces vacants : &#039;&#039;I&#039;&#039; (fichier dépendant d&#039;un répertoire indexé par HTree), &#039;&#039;E&#039;&#039; (fichier dont la compression est erronée ; dépend directement de l&#039;attribut &#039;&#039;&amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt;ompressed&#039;&#039;), &#039;&#039;X&#039;&#039; (fichier compressé dont une partie des données brutes peut être consultée directement ; dépend de &amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt;) et &#039;&#039;Z&#039;&#039; (fichier compressé corrompu ; &#039;&amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt;). Ce sont des valeurs non modifiables ajoutées automatiquement aux fichiers. Les trois dernières ne sont toujours pas implémentées.&lt;br /&gt;
&lt;br /&gt;
Noter que &#039;&#039;ls&#039;&#039; n&#039;indique pas la présence éventuelle d&#039;attributs étendus et que &#039;&#039;find&#039;&#039; ne peut rechercher des fichiers selon ce critère.&lt;br /&gt;
&lt;br /&gt;
===ls, cp, mv===&lt;br /&gt;
Les commandes classiques de listage, copie et déplacement ne gèrent pas les attributs étendus, soit qu&#039;elles ne les affichent pas (&#039;&#039;ls&#039;&#039;), soit qu&#039;elles les ignorent.&lt;br /&gt;
&lt;br /&gt;
===Sauvegarde des données===&lt;br /&gt;
Sauvegarder des données dotées d&#039;attributs étendus ne peut se faire correctement que si : &lt;br /&gt;
* le système de fichiers de stockage gère lui-même les attributs ; &lt;br /&gt;
* le logiciel de sauvegarde est compatible avec les attributs.&lt;br /&gt;
&lt;br /&gt;
Dans le second cas, il convient de ne pas utiliser &#039;&#039;cpio&#039;&#039;, &#039;&#039;tar&#039;&#039; ou &#039;&#039;rsync&#039;&#039;, par exemple.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Copy|28.10.05|Vincent Ramos|FDL}}&lt;/div&gt;</summary>
		<author><name>Vincent Ramos</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Cat%C3%A9gorie:Trucs_Administration&amp;diff=10165</id>
		<title>Catégorie:Trucs Administration</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Cat%C3%A9gorie:Trucs_Administration&amp;diff=10165"/>
		<updated>2005-10-28T01:16:31Z</updated>

		<summary type="html">&lt;p&gt;Vincent Ramos : liens et typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Catégorie:Trucs]]&lt;br /&gt;
Tout sur l&#039;administration sous Linux : les [[permissions|droits et les permissions]], les [[systèmes de fichiers]], les logs, etc.&lt;/div&gt;</summary>
		<author><name>Vincent Ramos</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Attributs_%C3%A9tendus&amp;diff=10164</id>
		<title>Attributs étendus</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Attributs_%C3%A9tendus&amp;diff=10164"/>
		<updated>2005-10-28T01:14:31Z</updated>

		<summary type="html">&lt;p&gt;Vincent Ramos : /* ls, cp, mv */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Les [[système de fichiers|systèmes de fichiers]] &#039;&#039;ext2&#039;&#039; et &#039;&#039;ext3&#039;&#039; (ainsi que &#039;&#039;reiserfs&#039;&#039; dans certaines conditions) offrent la possibilité de donner à des fichiers (fichiers réels ou répertoires) des &#039;&#039;&#039;attributs étendus&#039;&#039;&#039; qui s&#039;ajoutent aux [[permissions|permissions classiques POSIX.1]], éventuellement complétées par les [[ACL|permissions étendues ACL]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cadre type=&amp;quot;alert&amp;quot;&amp;gt;Seuls ces systèmes de fichiers offrant ces attributs, il n&#039;est pas prudent ─ en terme de sécurité ─ de s&#039;appuyer lourdement sur leur présence si l&#039;on est amené à transférer fréquemment des données d&#039;un système de fichiers &#039;&#039;ext&#039;&#039; à un autre. D&#039;autre part, il convient de tester ces possibilités : toutes les versions du noyau n&#039;en tiennent pas compte de la même manière.&amp;lt;/cadre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Mise en place==&lt;br /&gt;
Il n&#039;y a rien à faire pour des partitions en &#039;&#039;ext2&#039;&#039; ou &#039;&#039;ext3&#039;&#039;, qui respectent nativement les attributs étendus.&lt;br /&gt;
&lt;br /&gt;
Chose assez peu connue, cependant, le système de fichiers &#039;&#039;reiserfs&#039;&#039; peut respecter les attributs étendus, à condition d&#039;[[fstab|être monté]] avec l&#039;option idoine &amp;lt;code&amp;gt;attrs&amp;lt;/code&amp;gt;. Pour ce faire, les commandes suivantes sont appliquées : &lt;br /&gt;
* sur une partition non encore montée : &amp;lt;code&amp;gt;mount -t reiserfs -o attrs /dev/partition /point/de/montage&amp;lt;/code&amp;gt; ; &lt;br /&gt;
* sur une partition déjà montée : &amp;lt;code&amp;gt;mount -o attrs /point/de/montage&amp;lt;/code&amp;gt; (remontage à la volée).&lt;br /&gt;
&lt;br /&gt;
Pour que la prise en compte soit effective à chaque montage automatique (le cas échéant), il faut ajouter l&#039;option dans &#039;&#039;[[fstab|/etc/fstab]]&#039;&#039;. Par exemple : &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
/dev/hda1       /               reiserfs    defaults,acl,attrs 0       1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enfin, on peut recompiler son noyau avec l&#039;option &amp;lt;code&amp;gt;CONFIG_REISERFS_FS_XATTR = y&amp;lt;/code&amp;gt; pour que le mode &amp;lt;code&amp;gt;attr&amp;lt;/code&amp;gt; soit automatiquement appliqué lors du montage d&#039;une partition en &#039;&#039;reiserfs&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cadre type=&amp;quot;note&amp;quot;&amp;gt;Noter que des fichiers d&#039;une partition en &#039;&#039;reiserfs&#039;&#039; montée sans l&#039;option &amp;lt;code&amp;gt;attrs&amp;lt;/code&amp;gt; (ou la recompilation du noyau) peuvent recevoir des attributs étendus : ils seront bien enregistrés mais n&#039;auront aucun effet. La commande de modification d&#039;attributs, &#039;&#039;chattr&#039;&#039;, ne renverra donc aucun message d&#039;erreur sans pour autant que les attributs soient pris en compte. Ce détail peut avoir des répercussion pour la sécurité du système : on peut, à tort, croire protéger des fichiers.&amp;lt;/cadre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Types d&#039;attributs==&lt;br /&gt;
Selon la norme POSIX.1, tout fichier possède les permissions en lecture, écriture et exécution. On peut leur adjoindre des attributs supplémentaires, qui s&#039;imposent à tous les utilisateurs (dont root, qui peut cependant annuler ces attributs) quand ils modifient les actions qu&#039;on peut avoir sur eux. Certains attributs sont encore expérimentaux (octobre 2005) et nécessitent de patcher le noyau pour qu&#039;ils aient un effet réel. &lt;br /&gt;
;append only (a), « ajouter seulement » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Protège le fichier contre la suppression de contenu : on ne peut que lui en ajouter. &lt;br /&gt;
;compressed (c), « compressé » ─ &#039;&#039;expérimental&#039;&#039;&lt;br /&gt;
:Le fichier est automatiquement compressé ─ si c&#039;est utile, et avec un format de compression le plus efficace ─ quand il est stocké. La décompression lors de la lecture et la compression des données ajoutées au fichier par la suite se font à la volée, de manière transparente pour l&#039;utilisateur (la commande &amp;lt;code&amp;gt;ls -l&amp;lt;/code&amp;gt;, par exemple, montre la taille décompressée). &lt;br /&gt;
:Cet attribut appliqué à un répertoire ne le compresse pas mais fait se compresser automatiquement tout nouveau fichier qu&#039;on y crée.&lt;br /&gt;
;no dump (d), « pas de sauvegarde »&lt;br /&gt;
:Un fichier ainsi marqué sera ignoré par la commande de sauvegarde &#039;&#039;dump&#039;&#039; (qui ne fonctionne que pour &#039;&#039;ext2&#039;&#039; et &#039;&#039;ext3&#039;&#039;). Cet attribut est utile pour empêcher la sauvegarde par &#039;&#039;dump&#039;&#039; d&#039;un fichier ou répertoire situés dans un système de fichiers monté avec l&#039;option &amp;lt;code&amp;gt;dump&amp;lt;/code&amp;gt; positionnée à &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; (cf &#039;&#039;[[fstab]]&#039;&#039;).&lt;br /&gt;
;immutable (i), « immuable » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Protège le fichier contre toute modification (suppression, modification, déplacement, changements de permissions), même par root, et empêche qu&#039;on crée un lien vers lui. Seule la modification des attributs étendus est permise à son propriétaire et seul root peut enlever l&#039;attribut « immuable » d&#039;un fichier.&lt;br /&gt;
:Cet attribut est sans doute l&#039;un des plus intéressants.&lt;br /&gt;
;data journalling (j), « journalisation des données » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Cet attribut n&#039;est utile qu&#039;avec une partition en &#039;&#039;ext3&#039;&#039; montée avec les options de journalisation des données &amp;lt;code&amp;gt;data=ordered&amp;lt;/code&amp;gt; (montage par défaut) ou &amp;lt;code&amp;gt;data=writeback&amp;lt;/code&amp;gt; pour simuler une journalisation du type &amp;lt;code&amp;gt;data=journal&amp;lt;/code&amp;gt;, où les données sont écrites dans le journal avant de l&#039;être dans le fichier lui-même. Consulter &amp;lt;code&amp;gt;man mount 8&amp;lt;/code&amp;gt; pour plus de détails sur les mécanismes de journalisation d&#039;&#039;&#039;ext3&#039;&#039;. &lt;br /&gt;
:Sur une partition &#039;&#039;ext3&#039;&#039; en mode &amp;lt;code&amp;gt;data=journal&amp;lt;/code&amp;gt;, cet attribut est ignoré, de même que sur les partitions en &#039;&#039;ext2&#039;&#039; et &#039;&#039;reiserfs&#039;&#039;, le premier type n&#039;étant pas journalisé, le second l&#039;étant d&#039;une manière incompatible.&lt;br /&gt;
;secure deletion (s), « effacement sécurisé »  ─ &#039;&#039;expérimental&#039;&#039;&lt;br /&gt;
:Un fichier portant cet attribut est non seulement « effacé » mais en plus les blocs qu&#039;il occupait dans le système de fichiers sont recouverts de zéros pour éviter qu&#039;on puisse récupérer les données malgré l&#039;effacement. &lt;br /&gt;
:Normalement, effacer un fichier consiste seulement à détruire toute référence vers l&#039;espace occupé par les données de ce fichier dans la partition. Il n&#039;est cependant pas question de détruire physiquement les données elles-mêmes, sauf si le fichier possède cet attribut, auquel cas non seulement il n&#039;est plus accessible mais en plus tous ses bits sont réécrits.&lt;br /&gt;
;no tail-merging (t)&lt;br /&gt;
;undeletable (u), « ineffaçable » ─ &#039;&#039;&#039;expérimental&#039;&#039;&#039;&lt;br /&gt;
:Lors d&#039;un effacement, les références vers l&#039;espace du système de fichiers qui contient les données sont détruites, mais pas les données. Sans ces références, cependant, l&#039;espace anciennement réservé peut être utilisé par des fichiers nouvellement créés ou ayant été augmentés. Dans ce cas, il n&#039;est plus possible de récupérer les données en question. &lt;br /&gt;
:L&#039;attribut « ineffaçable » permet de préserver les blocs qui contenaient les données de façon à ce qu&#039;on puisse les récupérer si besoin est. L&#039;espace-disque n&#039;est donc pas libéré.&lt;br /&gt;
;no atime updates (A), « pas de mise à jour de la date de dernier accès »&lt;br /&gt;
:À chaque fois qu&#039;on accède à un fichier, la date du dernier accès est modifiée. Dans un système de fichiers dans lequel existent de nombreux fichiers auxquels on accède souvent (c&#039;est le cas pour les serveurs de &#039;&#039;news&#039;&#039;), ces modifications peuvent ralentir le système. &lt;br /&gt;
:Donner à un fichier l&#039;attribut &#039;&#039;no atime updates&#039;&#039; permet d&#039;éviter ce problème. Noter que la même option existe lorsque l&#039;on monte une partition dans l&#039;arborescence globale (&amp;lt;code&amp;gt;mount -o noatime&amp;lt;/code&amp;gt;), option que l&#039;on peut inscrire dans [[fstab|/etc/fstab]].&lt;br /&gt;
;synchronous directory updates (D), « mise à jour synchone des répertoires »&lt;br /&gt;
;synchronous updates (S), « mise à jour synchrone »&lt;br /&gt;
:Ces deux attributs ont un effet similaire. Le premier sert aux répertoires, le second aux fichiers. Les données des répertoires et fichiers concernés sont mises à jour dès qu&#039;une modification a eu lieu (et non en différé, comme c&#039;est le cas par défaut pour &#039;&#039;ext2&#039;&#039; et &#039;&#039;ext3&#039;&#039;). C&#039;est l&#039;équivalent des options de montage &amp;lt;code&amp;gt;mount -o sync&amp;lt;/code&amp;gt; et &amp;lt;code&amp;gt;mount -o dirsync&amp;lt;/code&amp;gt; (qu&#039;on peut aussi passer dans &#039;&#039;fstab&#039;&#039;) mais pour une sous-partie de l&#039;arborescence et non la partition entière.&lt;br /&gt;
;top of directory hierarchy (T), « répertoire racine » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Cet attribut indique au répartiteur de blocs Orlov (ou &#039;&#039;[http://lwn.net/Articles/14633/ Orlov block allocator]&#039;&#039;, utilisé par le noyau Linux pour les systèmes de fichiers &#039;&#039;ext2&#039;&#039; et &#039;&#039;ext3&#039;&#039; depuis la version 2.5.46) que le répertoire concerné doit être considéré comme un répertoire racine de la hiérarchie des répertoires. &lt;br /&gt;
:L&#039;allocateur de blocs est un processus propre au système de fichier permettant de répartir les blocs de données des fichiers dans l&#039;espace disponible tout en garantissant une qu&#039;il ne se produira pas une trop grande fragmentation. Pour cela, on place généralement dans un même groupe de cylindres du disque dur les blocs de fichiers dépendant d&#039;un  même répertoire. Dans le cas contraire, les données risquent d&#039;être éparpillées, voire fragmentées (les blocs d&#039;un même fichier sont alors répartis sur plusieurs cylindres non contigus). On ne peut cependant prévoir à l&#039;avance de quel espace aura besoin un répertoire racine. Il pourrait ne contenir que peu de fichiers ou, au contraire, une arborescence complète et chargée. Le répartiteur Orlov prend donc soin d&#039;éloigner le plus possible les uns des autres les répertoires racines, pour qu&#039;ils disposent d&#039;un espace suffisant où croître.&lt;br /&gt;
:Ajouter cet attribut à un répertoire permet au répartiteur de le traiter comme un répertoire racine, même s&#039;il n&#039;en est pas un, et de le placer  loin des autres répertoires racines. Il est donc utile avec des sous-arborescences de fichiers complexes et lourdes qui risqueraient d&#039;être fragmentées.&lt;br /&gt;
&lt;br /&gt;
==Commandes==&lt;br /&gt;
ll existe deux commandes pour accéder aux attributs étendus : &#039;&#039;lsattr&#039;&#039; (&#039;&#039;list attributes&#039;&#039;, « lister les attributs ») &#039;&#039;chattr&#039;&#039; (&#039;&#039;change attributes&#039;&#039;, « changer les attributs »). Toutes deux sont incluses dans le paquetage &#039;&#039;e2fsprogs&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===chattr===&lt;br /&gt;
Cette commande s&#039;utilise quasiment comme un &#039;&#039;chmod&#039;&#039; simplifié : en effet, les attributs ne peuvent être indiqués que sous forme symbolique (dont les codes sont donnés ci-dessus) et non au moyen d&#039;un éventuel nombre octal.&lt;br /&gt;
&lt;br /&gt;
Ainsi, pour donner un attibut, on utilise la commande suivie de + et du code ; par exemple, rendre un fichier « immuable » se fait avec la commande (en root) :&lt;br /&gt;
&amp;lt;code&amp;gt;chattr +i fichier&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Retirer un attribut requiert l&#039;opérateur &amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt;. La commande pour enlever l&#039;attribut « immuable » est donc : &lt;br /&gt;
&amp;lt;code&amp;gt;chattr -i fichier&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enfin, pour faire en sorte qu&#039;un fichier n&#039;ait que l&#039;attribut « immuable » :&lt;br /&gt;
&amp;lt;code&amp;gt;chattr =i fichier&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La commande peut être utilisée de manière récursive au moyen de l&#039;option &amp;lt;code&amp;gt;-R&amp;lt;/code&amp;gt; : pour rendre toute une hiérarchie immuable, il suffit de : &lt;br /&gt;
&amp;lt;code&amp;gt;chattr -R + i répertoire/&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===lsattr===&lt;br /&gt;
Cette commande fonctionne comme &#039;&#039;ls&#039;&#039; et prend les options &amp;lt;code&amp;gt;-R&amp;lt;/code&amp;gt; (listage récursif), &amp;lt;code&amp;gt;-a&amp;lt;/code&amp;gt; (tout afficher) et &amp;lt;code&amp;gt;-d&amp;lt;/code&amp;gt; (lister les répertoires comme des fichiers), entre autres ; &#039;&#039;lsattr&#039;&#039; peut afficher des attributs qu&#039;on ne peut modifier avec &#039;&#039;chattr&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
L&#039;affichage est simple : chaque attribut du fichier est représenté par son code, une absence d&#039;attribut l&#039;étant par un &amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt;, à la manière du codage des permissions pratiqué par &#039;&#039;ls -l&#039;&#039; (&amp;lt;code&amp;gt;-rw-r--r--&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Ainsi : &lt;br /&gt;
&amp;lt;code&amp;gt;chattr +ASacDdijsTtu fichier&lt;br /&gt;
lsattr fichier&lt;br /&gt;
    suS-iadAc----j-tT fichier&amp;lt;/code&amp;gt;&lt;br /&gt;
L&#039;attribut &amp;lt;code&amp;gt;D&amp;lt;/code&amp;gt; n&#039;a pas été appliqué, puisque le fichier n&#039;est pas un répertoire. &lt;br /&gt;
&lt;br /&gt;
Les autres valeurs que peut indiquer &#039;&#039;lsattr&#039;&#039; s&#039;intercalent dans les espaces vacants : &#039;&#039;I&#039;&#039; (fichier dépendant d&#039;un répertoire indexé par HTree), &#039;&#039;E&#039;&#039; (fichier dont la compression est erronée ; dépend directement de l&#039;attribut &#039;&#039;&amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt;ompressed&#039;&#039;), &#039;&#039;X&#039;&#039; (fichier compressé dont une partie des données brutes peut être consultée directement ; dépend de &amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt;) et &#039;&#039;Z&#039;&#039; (fichier compressé corrompu ; &#039;&amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt;). Ce sont des valeurs non modifiables ajoutées automatiquement aux fichiers. Les trois dernières ne sont toujours pas implémentées.&lt;br /&gt;
&lt;br /&gt;
===ls, cp, mv===&lt;br /&gt;
Les commandes classiques de listage, copie et déplacement ne gèrent pas les attributs étendus, soit qu&#039;elles ne les affichent pas (&#039;&#039;ls&#039;&#039;), soit qu&#039;elles les ignorent.&lt;br /&gt;
&lt;br /&gt;
===Sauvegarde des données===&lt;br /&gt;
Sauvegarder des données dotées d&#039;attributs étendus ne peut se faire correctement que si : &lt;br /&gt;
* le système de fichiers de stockage gère lui-même les attributs ; &lt;br /&gt;
* le logiciel de sauvegarde est compatible avec les attributs.&lt;br /&gt;
&lt;br /&gt;
Dans le second cas, il convient de ne pas utiliser &#039;&#039;cpio&#039;&#039;, &#039;&#039;tar&#039;&#039; ou &#039;&#039;rsync&#039;&#039;, par exemple.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Copy|28.10.05|Vincent Ramos|FDL}}&lt;/div&gt;</summary>
		<author><name>Vincent Ramos</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Attributs_%C3%A9tendus&amp;diff=10163</id>
		<title>Attributs étendus</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Attributs_%C3%A9tendus&amp;diff=10163"/>
		<updated>2005-10-28T01:14:19Z</updated>

		<summary type="html">&lt;p&gt;Vincent Ramos : /* lsattr */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Les [[système de fichiers|systèmes de fichiers]] &#039;&#039;ext2&#039;&#039; et &#039;&#039;ext3&#039;&#039; (ainsi que &#039;&#039;reiserfs&#039;&#039; dans certaines conditions) offrent la possibilité de donner à des fichiers (fichiers réels ou répertoires) des &#039;&#039;&#039;attributs étendus&#039;&#039;&#039; qui s&#039;ajoutent aux [[permissions|permissions classiques POSIX.1]], éventuellement complétées par les [[ACL|permissions étendues ACL]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cadre type=&amp;quot;alert&amp;quot;&amp;gt;Seuls ces systèmes de fichiers offrant ces attributs, il n&#039;est pas prudent ─ en terme de sécurité ─ de s&#039;appuyer lourdement sur leur présence si l&#039;on est amené à transférer fréquemment des données d&#039;un système de fichiers &#039;&#039;ext&#039;&#039; à un autre. D&#039;autre part, il convient de tester ces possibilités : toutes les versions du noyau n&#039;en tiennent pas compte de la même manière.&amp;lt;/cadre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Mise en place==&lt;br /&gt;
Il n&#039;y a rien à faire pour des partitions en &#039;&#039;ext2&#039;&#039; ou &#039;&#039;ext3&#039;&#039;, qui respectent nativement les attributs étendus.&lt;br /&gt;
&lt;br /&gt;
Chose assez peu connue, cependant, le système de fichiers &#039;&#039;reiserfs&#039;&#039; peut respecter les attributs étendus, à condition d&#039;[[fstab|être monté]] avec l&#039;option idoine &amp;lt;code&amp;gt;attrs&amp;lt;/code&amp;gt;. Pour ce faire, les commandes suivantes sont appliquées : &lt;br /&gt;
* sur une partition non encore montée : &amp;lt;code&amp;gt;mount -t reiserfs -o attrs /dev/partition /point/de/montage&amp;lt;/code&amp;gt; ; &lt;br /&gt;
* sur une partition déjà montée : &amp;lt;code&amp;gt;mount -o attrs /point/de/montage&amp;lt;/code&amp;gt; (remontage à la volée).&lt;br /&gt;
&lt;br /&gt;
Pour que la prise en compte soit effective à chaque montage automatique (le cas échéant), il faut ajouter l&#039;option dans &#039;&#039;[[fstab|/etc/fstab]]&#039;&#039;. Par exemple : &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
/dev/hda1       /               reiserfs    defaults,acl,attrs 0       1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enfin, on peut recompiler son noyau avec l&#039;option &amp;lt;code&amp;gt;CONFIG_REISERFS_FS_XATTR = y&amp;lt;/code&amp;gt; pour que le mode &amp;lt;code&amp;gt;attr&amp;lt;/code&amp;gt; soit automatiquement appliqué lors du montage d&#039;une partition en &#039;&#039;reiserfs&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cadre type=&amp;quot;note&amp;quot;&amp;gt;Noter que des fichiers d&#039;une partition en &#039;&#039;reiserfs&#039;&#039; montée sans l&#039;option &amp;lt;code&amp;gt;attrs&amp;lt;/code&amp;gt; (ou la recompilation du noyau) peuvent recevoir des attributs étendus : ils seront bien enregistrés mais n&#039;auront aucun effet. La commande de modification d&#039;attributs, &#039;&#039;chattr&#039;&#039;, ne renverra donc aucun message d&#039;erreur sans pour autant que les attributs soient pris en compte. Ce détail peut avoir des répercussion pour la sécurité du système : on peut, à tort, croire protéger des fichiers.&amp;lt;/cadre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Types d&#039;attributs==&lt;br /&gt;
Selon la norme POSIX.1, tout fichier possède les permissions en lecture, écriture et exécution. On peut leur adjoindre des attributs supplémentaires, qui s&#039;imposent à tous les utilisateurs (dont root, qui peut cependant annuler ces attributs) quand ils modifient les actions qu&#039;on peut avoir sur eux. Certains attributs sont encore expérimentaux (octobre 2005) et nécessitent de patcher le noyau pour qu&#039;ils aient un effet réel. &lt;br /&gt;
;append only (a), « ajouter seulement » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Protège le fichier contre la suppression de contenu : on ne peut que lui en ajouter. &lt;br /&gt;
;compressed (c), « compressé » ─ &#039;&#039;expérimental&#039;&#039;&lt;br /&gt;
:Le fichier est automatiquement compressé ─ si c&#039;est utile, et avec un format de compression le plus efficace ─ quand il est stocké. La décompression lors de la lecture et la compression des données ajoutées au fichier par la suite se font à la volée, de manière transparente pour l&#039;utilisateur (la commande &amp;lt;code&amp;gt;ls -l&amp;lt;/code&amp;gt;, par exemple, montre la taille décompressée). &lt;br /&gt;
:Cet attribut appliqué à un répertoire ne le compresse pas mais fait se compresser automatiquement tout nouveau fichier qu&#039;on y crée.&lt;br /&gt;
;no dump (d), « pas de sauvegarde »&lt;br /&gt;
:Un fichier ainsi marqué sera ignoré par la commande de sauvegarde &#039;&#039;dump&#039;&#039; (qui ne fonctionne que pour &#039;&#039;ext2&#039;&#039; et &#039;&#039;ext3&#039;&#039;). Cet attribut est utile pour empêcher la sauvegarde par &#039;&#039;dump&#039;&#039; d&#039;un fichier ou répertoire situés dans un système de fichiers monté avec l&#039;option &amp;lt;code&amp;gt;dump&amp;lt;/code&amp;gt; positionnée à &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; (cf &#039;&#039;[[fstab]]&#039;&#039;).&lt;br /&gt;
;immutable (i), « immuable » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Protège le fichier contre toute modification (suppression, modification, déplacement, changements de permissions), même par root, et empêche qu&#039;on crée un lien vers lui. Seule la modification des attributs étendus est permise à son propriétaire et seul root peut enlever l&#039;attribut « immuable » d&#039;un fichier.&lt;br /&gt;
:Cet attribut est sans doute l&#039;un des plus intéressants.&lt;br /&gt;
;data journalling (j), « journalisation des données » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Cet attribut n&#039;est utile qu&#039;avec une partition en &#039;&#039;ext3&#039;&#039; montée avec les options de journalisation des données &amp;lt;code&amp;gt;data=ordered&amp;lt;/code&amp;gt; (montage par défaut) ou &amp;lt;code&amp;gt;data=writeback&amp;lt;/code&amp;gt; pour simuler une journalisation du type &amp;lt;code&amp;gt;data=journal&amp;lt;/code&amp;gt;, où les données sont écrites dans le journal avant de l&#039;être dans le fichier lui-même. Consulter &amp;lt;code&amp;gt;man mount 8&amp;lt;/code&amp;gt; pour plus de détails sur les mécanismes de journalisation d&#039;&#039;&#039;ext3&#039;&#039;. &lt;br /&gt;
:Sur une partition &#039;&#039;ext3&#039;&#039; en mode &amp;lt;code&amp;gt;data=journal&amp;lt;/code&amp;gt;, cet attribut est ignoré, de même que sur les partitions en &#039;&#039;ext2&#039;&#039; et &#039;&#039;reiserfs&#039;&#039;, le premier type n&#039;étant pas journalisé, le second l&#039;étant d&#039;une manière incompatible.&lt;br /&gt;
;secure deletion (s), « effacement sécurisé »  ─ &#039;&#039;expérimental&#039;&#039;&lt;br /&gt;
:Un fichier portant cet attribut est non seulement « effacé » mais en plus les blocs qu&#039;il occupait dans le système de fichiers sont recouverts de zéros pour éviter qu&#039;on puisse récupérer les données malgré l&#039;effacement. &lt;br /&gt;
:Normalement, effacer un fichier consiste seulement à détruire toute référence vers l&#039;espace occupé par les données de ce fichier dans la partition. Il n&#039;est cependant pas question de détruire physiquement les données elles-mêmes, sauf si le fichier possède cet attribut, auquel cas non seulement il n&#039;est plus accessible mais en plus tous ses bits sont réécrits.&lt;br /&gt;
;no tail-merging (t)&lt;br /&gt;
;undeletable (u), « ineffaçable » ─ &#039;&#039;&#039;expérimental&#039;&#039;&#039;&lt;br /&gt;
:Lors d&#039;un effacement, les références vers l&#039;espace du système de fichiers qui contient les données sont détruites, mais pas les données. Sans ces références, cependant, l&#039;espace anciennement réservé peut être utilisé par des fichiers nouvellement créés ou ayant été augmentés. Dans ce cas, il n&#039;est plus possible de récupérer les données en question. &lt;br /&gt;
:L&#039;attribut « ineffaçable » permet de préserver les blocs qui contenaient les données de façon à ce qu&#039;on puisse les récupérer si besoin est. L&#039;espace-disque n&#039;est donc pas libéré.&lt;br /&gt;
;no atime updates (A), « pas de mise à jour de la date de dernier accès »&lt;br /&gt;
:À chaque fois qu&#039;on accède à un fichier, la date du dernier accès est modifiée. Dans un système de fichiers dans lequel existent de nombreux fichiers auxquels on accède souvent (c&#039;est le cas pour les serveurs de &#039;&#039;news&#039;&#039;), ces modifications peuvent ralentir le système. &lt;br /&gt;
:Donner à un fichier l&#039;attribut &#039;&#039;no atime updates&#039;&#039; permet d&#039;éviter ce problème. Noter que la même option existe lorsque l&#039;on monte une partition dans l&#039;arborescence globale (&amp;lt;code&amp;gt;mount -o noatime&amp;lt;/code&amp;gt;), option que l&#039;on peut inscrire dans [[fstab|/etc/fstab]].&lt;br /&gt;
;synchronous directory updates (D), « mise à jour synchone des répertoires »&lt;br /&gt;
;synchronous updates (S), « mise à jour synchrone »&lt;br /&gt;
:Ces deux attributs ont un effet similaire. Le premier sert aux répertoires, le second aux fichiers. Les données des répertoires et fichiers concernés sont mises à jour dès qu&#039;une modification a eu lieu (et non en différé, comme c&#039;est le cas par défaut pour &#039;&#039;ext2&#039;&#039; et &#039;&#039;ext3&#039;&#039;). C&#039;est l&#039;équivalent des options de montage &amp;lt;code&amp;gt;mount -o sync&amp;lt;/code&amp;gt; et &amp;lt;code&amp;gt;mount -o dirsync&amp;lt;/code&amp;gt; (qu&#039;on peut aussi passer dans &#039;&#039;fstab&#039;&#039;) mais pour une sous-partie de l&#039;arborescence et non la partition entière.&lt;br /&gt;
;top of directory hierarchy (T), « répertoire racine » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Cet attribut indique au répartiteur de blocs Orlov (ou &#039;&#039;[http://lwn.net/Articles/14633/ Orlov block allocator]&#039;&#039;, utilisé par le noyau Linux pour les systèmes de fichiers &#039;&#039;ext2&#039;&#039; et &#039;&#039;ext3&#039;&#039; depuis la version 2.5.46) que le répertoire concerné doit être considéré comme un répertoire racine de la hiérarchie des répertoires. &lt;br /&gt;
:L&#039;allocateur de blocs est un processus propre au système de fichier permettant de répartir les blocs de données des fichiers dans l&#039;espace disponible tout en garantissant une qu&#039;il ne se produira pas une trop grande fragmentation. Pour cela, on place généralement dans un même groupe de cylindres du disque dur les blocs de fichiers dépendant d&#039;un  même répertoire. Dans le cas contraire, les données risquent d&#039;être éparpillées, voire fragmentées (les blocs d&#039;un même fichier sont alors répartis sur plusieurs cylindres non contigus). On ne peut cependant prévoir à l&#039;avance de quel espace aura besoin un répertoire racine. Il pourrait ne contenir que peu de fichiers ou, au contraire, une arborescence complète et chargée. Le répartiteur Orlov prend donc soin d&#039;éloigner le plus possible les uns des autres les répertoires racines, pour qu&#039;ils disposent d&#039;un espace suffisant où croître.&lt;br /&gt;
:Ajouter cet attribut à un répertoire permet au répartiteur de le traiter comme un répertoire racine, même s&#039;il n&#039;en est pas un, et de le placer  loin des autres répertoires racines. Il est donc utile avec des sous-arborescences de fichiers complexes et lourdes qui risqueraient d&#039;être fragmentées.&lt;br /&gt;
&lt;br /&gt;
==Commandes==&lt;br /&gt;
ll existe deux commandes pour accéder aux attributs étendus : &#039;&#039;lsattr&#039;&#039; (&#039;&#039;list attributes&#039;&#039;, « lister les attributs ») &#039;&#039;chattr&#039;&#039; (&#039;&#039;change attributes&#039;&#039;, « changer les attributs »). Toutes deux sont incluses dans le paquetage &#039;&#039;e2fsprogs&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===chattr===&lt;br /&gt;
Cette commande s&#039;utilise quasiment comme un &#039;&#039;chmod&#039;&#039; simplifié : en effet, les attributs ne peuvent être indiqués que sous forme symbolique (dont les codes sont donnés ci-dessus) et non au moyen d&#039;un éventuel nombre octal.&lt;br /&gt;
&lt;br /&gt;
Ainsi, pour donner un attibut, on utilise la commande suivie de + et du code ; par exemple, rendre un fichier « immuable » se fait avec la commande (en root) :&lt;br /&gt;
&amp;lt;code&amp;gt;chattr +i fichier&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Retirer un attribut requiert l&#039;opérateur &amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt;. La commande pour enlever l&#039;attribut « immuable » est donc : &lt;br /&gt;
&amp;lt;code&amp;gt;chattr -i fichier&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enfin, pour faire en sorte qu&#039;un fichier n&#039;ait que l&#039;attribut « immuable » :&lt;br /&gt;
&amp;lt;code&amp;gt;chattr =i fichier&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La commande peut être utilisée de manière récursive au moyen de l&#039;option &amp;lt;code&amp;gt;-R&amp;lt;/code&amp;gt; : pour rendre toute une hiérarchie immuable, il suffit de : &lt;br /&gt;
&amp;lt;code&amp;gt;chattr -R + i répertoire/&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===lsattr===&lt;br /&gt;
Cette commande fonctionne comme &#039;&#039;ls&#039;&#039; et prend les options &amp;lt;code&amp;gt;-R&amp;lt;/code&amp;gt; (listage récursif), &amp;lt;code&amp;gt;-a&amp;lt;/code&amp;gt; (tout afficher) et &amp;lt;code&amp;gt;-d&amp;lt;/code&amp;gt; (lister les répertoires comme des fichiers), entre autres ; &#039;&#039;lsattr&#039;&#039; peut afficher des attributs qu&#039;on ne peut modifier avec &#039;&#039;chattr&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
L&#039;affichage est simple : chaque attribut du fichier est représenté par son code, une absence d&#039;attribut l&#039;étant par un &amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt;, à la manière du codage des permissions pratiqué par &#039;&#039;ls -l&#039;&#039; (&amp;lt;code&amp;gt;-rw-r--r--&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Ainsi : &lt;br /&gt;
&amp;lt;code&amp;gt;chattr +ASacDdijsTtu fichier&lt;br /&gt;
lsattr fichier&lt;br /&gt;
    suS-iadAc----j-tT fichier&amp;lt;/code&amp;gt;&lt;br /&gt;
L&#039;attribut &amp;lt;code&amp;gt;D&amp;lt;/code&amp;gt; n&#039;a pas été appliqué, puisque le fichier n&#039;est pas un répertoire. &lt;br /&gt;
&lt;br /&gt;
Les autres valeurs que peut indiquer &#039;&#039;lsattr&#039;&#039; s&#039;intercalent dans les espaces vacants : &#039;&#039;I&#039;&#039; (fichier dépendant d&#039;un répertoire indexé par HTree), &#039;&#039;E&#039;&#039; (fichier dont la compression est erronée ; dépend directement de l&#039;attribut &#039;&#039;&amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt;ompressed&#039;&#039;), &#039;&#039;X&#039;&#039; (fichier compressé dont une partie des données brutes peut être consultée directement ; dépend de &amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt;) et &#039;&#039;Z&#039;&#039; (fichier compressé corrompu ; &#039;&amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt;). Ce sont des valeurs non modifiables ajoutées automatiquement aux fichiers. Les trois dernières ne sont toujours pas implémentées.&lt;br /&gt;
&lt;br /&gt;
===ls, cp, mv===&lt;br /&gt;
Les commandes classiques de listage, copie et déplacement ne gèrent pas les attributs étendus, soit qu&#039;elles ne les affichent pas (&#039;&#039;ls&#039;&#039;), soit qu&#039;elles les ignore.&lt;br /&gt;
&lt;br /&gt;
===Sauvegarde des données===&lt;br /&gt;
Sauvegarder des données dotées d&#039;attributs étendus ne peut se faire correctement que si : &lt;br /&gt;
* le système de fichiers de stockage gère lui-même les attributs ; &lt;br /&gt;
* le logiciel de sauvegarde est compatible avec les attributs.&lt;br /&gt;
&lt;br /&gt;
Dans le second cas, il convient de ne pas utiliser &#039;&#039;cpio&#039;&#039;, &#039;&#039;tar&#039;&#039; ou &#039;&#039;rsync&#039;&#039;, par exemple.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Copy|28.10.05|Vincent Ramos|FDL}}&lt;/div&gt;</summary>
		<author><name>Vincent Ramos</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Gestion_des_ACL&amp;diff=10162</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=10162"/>
		<updated>2005-10-28T00:47:34Z</updated>

		<summary type="html">&lt;p&gt;Vincent Ramos : /* Documents annexes */&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 -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 -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.suse.de/~agruen/acl/linux-acls/online/ POSIX Access Control Lists on Linux].&lt;br /&gt;
&lt;br /&gt;
{{Copy|27.10.05|Vincent Ramos|FDL}}&lt;/div&gt;</summary>
		<author><name>Vincent Ramos</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Utilisateur:Vincent_Ramos&amp;diff=10161</id>
		<title>Utilisateur:Vincent Ramos</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Utilisateur:Vincent_Ramos&amp;diff=10161"/>
		<updated>2005-10-28T00:43:18Z</updated>

		<summary type="html">&lt;p&gt;Vincent Ramos : /* Pages dont je détiens le copyright */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Vu que j&#039;ai quelque peu laissé de côté Wikipédia (cf. [http://fr.wikipedia.org/wiki/Utilisateur:Vincent_Ramos ma page là-bas]) parce qu&#039;elle me prenait tout mon temps, je pense que je pourrai contribuer un peu à ce wiki. &lt;br /&gt;
&lt;br /&gt;
Présentation dans les grandes lignes (pour les amateurs du genre, consulter ma page d&#039;utilisateur chez Wikipédia) : &lt;br /&gt;
* je pratique plusieurs wikis depuis longtemps et suis administrateur de la Wikipédia francophone ; j&#039;en ai installé un (mediawiki) sur mon serveur web/mail privé : je pense donc pouvoir rapidement m&#039;adapter à celui-ci ;&lt;br /&gt;
* je suis administrateur du réseau externe de l&#039;établissement scolaire où j&#039;enseigne : j&#039;en ai monté le projet de mise en place avec un collègue et fais actuellement tourner (et administre à distance par SSH) un serveur web sous Debian (Apache, PHP, MySQL pour un site sous SPIP dont je suis aussi administrateur/rédacteur), et mail (Exim4/uw-imap) ; je m&#039;occupe de la sécurité de ce serveur, j&#039;ai un accès administrateur au réseau interne et suis le « collègue-qui-sait-tout-en-informatique » de service ; &lt;br /&gt;
* comme je suis aussi enseignant (je pratique les lettres classiques : français, latin, grec ancien) et aime mon métier, je pense savoir expliquer (ou au moins vouloir expliquer) des notions complexes de manière à ce que la majorité les comprennent. Enfin, passionné de grammaire et d&#039;histoire de la langue française que je suis, je crois savoir rédiger correctement et dans un français lisible.&lt;br /&gt;
&lt;br /&gt;
Ce sera tout pour ma présentation. &lt;br /&gt;
==Pages dont je détiens le copyright==&lt;br /&gt;
... et dont je me considère être l&#039;auteur principal. Les pages qui me sont attribuées sont publiées en GNU-FDL. &lt;br /&gt;
* [[Gestion des ACL]] ; &lt;br /&gt;
* [[attributs étendus]] d&#039;&#039;&#039;ext2&#039;&#039; et &#039;&#039;ext3&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
[[Utilisateur:Vincent Ramos|Vincent Ramos]] 24 oct 2005 à 22:59 (CEST)&lt;/div&gt;</summary>
		<author><name>Vincent Ramos</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Attributs_%C3%A9tendus&amp;diff=10160</id>
		<title>Attributs étendus</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Attributs_%C3%A9tendus&amp;diff=10160"/>
		<updated>2005-10-28T00:41:59Z</updated>

		<summary type="html">&lt;p&gt;Vincent Ramos : /* Types d&amp;#039;attributs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Les [[système de fichiers|systèmes de fichiers]] &#039;&#039;ext2&#039;&#039; et &#039;&#039;ext3&#039;&#039; (ainsi que &#039;&#039;reiserfs&#039;&#039; dans certaines conditions) offrent la possibilité de donner à des fichiers (fichiers réels ou répertoires) des &#039;&#039;&#039;attributs étendus&#039;&#039;&#039; qui s&#039;ajoutent aux [[permissions|permissions classiques POSIX.1]], éventuellement complétées par les [[ACL|permissions étendues ACL]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cadre type=&amp;quot;alert&amp;quot;&amp;gt;Seuls ces systèmes de fichiers offrant ces attributs, il n&#039;est pas prudent ─ en terme de sécurité ─ de s&#039;appuyer lourdement sur leur présence si l&#039;on est amené à transférer fréquemment des données d&#039;un système de fichiers &#039;&#039;ext&#039;&#039; à un autre. D&#039;autre part, il convient de tester ces possibilités : toutes les versions du noyau n&#039;en tiennent pas compte de la même manière.&amp;lt;/cadre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Mise en place==&lt;br /&gt;
Il n&#039;y a rien à faire pour des partitions en &#039;&#039;ext2&#039;&#039; ou &#039;&#039;ext3&#039;&#039;, qui respectent nativement les attributs étendus.&lt;br /&gt;
&lt;br /&gt;
Chose assez peu connue, cependant, le système de fichiers &#039;&#039;reiserfs&#039;&#039; peut respecter les attributs étendus, à condition d&#039;[[fstab|être monté]] avec l&#039;option idoine &amp;lt;code&amp;gt;attrs&amp;lt;/code&amp;gt;. Pour ce faire, les commandes suivantes sont appliquées : &lt;br /&gt;
* sur une partition non encore montée : &amp;lt;code&amp;gt;mount -t reiserfs -o attrs /dev/partition /point/de/montage&amp;lt;/code&amp;gt; ; &lt;br /&gt;
* sur une partition déjà montée : &amp;lt;code&amp;gt;mount -o attrs /point/de/montage&amp;lt;/code&amp;gt; (remontage à la volée).&lt;br /&gt;
&lt;br /&gt;
Pour que la prise en compte soit effective à chaque montage automatique (le cas échéant), il faut ajouter l&#039;option dans &#039;&#039;[[fstab|/etc/fstab]]&#039;&#039;. Par exemple : &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
/dev/hda1       /               reiserfs    defaults,acl,attrs 0       1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enfin, on peut recompiler son noyau avec l&#039;option &amp;lt;code&amp;gt;CONFIG_REISERFS_FS_XATTR = y&amp;lt;/code&amp;gt; pour que le mode &amp;lt;code&amp;gt;attr&amp;lt;/code&amp;gt; soit automatiquement appliqué lors du montage d&#039;une partition en &#039;&#039;reiserfs&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cadre type=&amp;quot;note&amp;quot;&amp;gt;Noter que des fichiers d&#039;une partition en &#039;&#039;reiserfs&#039;&#039; montée sans l&#039;option &amp;lt;code&amp;gt;attrs&amp;lt;/code&amp;gt; (ou la recompilation du noyau) peuvent recevoir des attributs étendus : ils seront bien enregistrés mais n&#039;auront aucun effet. La commande de modification d&#039;attributs, &#039;&#039;chattr&#039;&#039;, ne renverra donc aucun message d&#039;erreur sans pour autant que les attributs soient pris en compte. Ce détail peut avoir des répercussion pour la sécurité du système : on peut, à tort, croire protéger des fichiers.&amp;lt;/cadre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Types d&#039;attributs==&lt;br /&gt;
Selon la norme POSIX.1, tout fichier possède les permissions en lecture, écriture et exécution. On peut leur adjoindre des attributs supplémentaires, qui s&#039;imposent à tous les utilisateurs (dont root, qui peut cependant annuler ces attributs) quand ils modifient les actions qu&#039;on peut avoir sur eux. Certains attributs sont encore expérimentaux (octobre 2005) et nécessitent de patcher le noyau pour qu&#039;ils aient un effet réel. &lt;br /&gt;
;append only (a), « ajouter seulement » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Protège le fichier contre la suppression de contenu : on ne peut que lui en ajouter. &lt;br /&gt;
;compressed (c), « compressé » ─ &#039;&#039;expérimental&#039;&#039;&lt;br /&gt;
:Le fichier est automatiquement compressé ─ si c&#039;est utile, et avec un format de compression le plus efficace ─ quand il est stocké. La décompression lors de la lecture et la compression des données ajoutées au fichier par la suite se font à la volée, de manière transparente pour l&#039;utilisateur (la commande &amp;lt;code&amp;gt;ls -l&amp;lt;/code&amp;gt;, par exemple, montre la taille décompressée). &lt;br /&gt;
:Cet attribut appliqué à un répertoire ne le compresse pas mais fait se compresser automatiquement tout nouveau fichier qu&#039;on y crée.&lt;br /&gt;
;no dump (d), « pas de sauvegarde »&lt;br /&gt;
:Un fichier ainsi marqué sera ignoré par la commande de sauvegarde &#039;&#039;dump&#039;&#039; (qui ne fonctionne que pour &#039;&#039;ext2&#039;&#039; et &#039;&#039;ext3&#039;&#039;). Cet attribut est utile pour empêcher la sauvegarde par &#039;&#039;dump&#039;&#039; d&#039;un fichier ou répertoire situés dans un système de fichiers monté avec l&#039;option &amp;lt;code&amp;gt;dump&amp;lt;/code&amp;gt; positionnée à &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; (cf &#039;&#039;[[fstab]]&#039;&#039;).&lt;br /&gt;
;immutable (i), « immuable » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Protège le fichier contre toute modification (suppression, modification, déplacement, changements de permissions), même par root, et empêche qu&#039;on crée un lien vers lui. Seule la modification des attributs étendus est permise à son propriétaire et seul root peut enlever l&#039;attribut « immuable » d&#039;un fichier.&lt;br /&gt;
:Cet attribut est sans doute l&#039;un des plus intéressants.&lt;br /&gt;
;data journalling (j), « journalisation des données » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Cet attribut n&#039;est utile qu&#039;avec une partition en &#039;&#039;ext3&#039;&#039; montée avec les options de journalisation des données &amp;lt;code&amp;gt;data=ordered&amp;lt;/code&amp;gt; (montage par défaut) ou &amp;lt;code&amp;gt;data=writeback&amp;lt;/code&amp;gt; pour simuler une journalisation du type &amp;lt;code&amp;gt;data=journal&amp;lt;/code&amp;gt;, où les données sont écrites dans le journal avant de l&#039;être dans le fichier lui-même. Consulter &amp;lt;code&amp;gt;man mount 8&amp;lt;/code&amp;gt; pour plus de détails sur les mécanismes de journalisation d&#039;&#039;&#039;ext3&#039;&#039;. &lt;br /&gt;
:Sur une partition &#039;&#039;ext3&#039;&#039; en mode &amp;lt;code&amp;gt;data=journal&amp;lt;/code&amp;gt;, cet attribut est ignoré, de même que sur les partitions en &#039;&#039;ext2&#039;&#039; et &#039;&#039;reiserfs&#039;&#039;, le premier type n&#039;étant pas journalisé, le second l&#039;étant d&#039;une manière incompatible.&lt;br /&gt;
;secure deletion (s), « effacement sécurisé »  ─ &#039;&#039;expérimental&#039;&#039;&lt;br /&gt;
:Un fichier portant cet attribut est non seulement « effacé » mais en plus les blocs qu&#039;il occupait dans le système de fichiers sont recouverts de zéros pour éviter qu&#039;on puisse récupérer les données malgré l&#039;effacement. &lt;br /&gt;
:Normalement, effacer un fichier consiste seulement à détruire toute référence vers l&#039;espace occupé par les données de ce fichier dans la partition. Il n&#039;est cependant pas question de détruire physiquement les données elles-mêmes, sauf si le fichier possède cet attribut, auquel cas non seulement il n&#039;est plus accessible mais en plus tous ses bits sont réécrits.&lt;br /&gt;
;no tail-merging (t)&lt;br /&gt;
;undeletable (u), « ineffaçable » ─ &#039;&#039;&#039;expérimental&#039;&#039;&#039;&lt;br /&gt;
:Lors d&#039;un effacement, les références vers l&#039;espace du système de fichiers qui contient les données sont détruites, mais pas les données. Sans ces références, cependant, l&#039;espace anciennement réservé peut être utilisé par des fichiers nouvellement créés ou ayant été augmentés. Dans ce cas, il n&#039;est plus possible de récupérer les données en question. &lt;br /&gt;
:L&#039;attribut « ineffaçable » permet de préserver les blocs qui contenaient les données de façon à ce qu&#039;on puisse les récupérer si besoin est. L&#039;espace-disque n&#039;est donc pas libéré.&lt;br /&gt;
;no atime updates (A), « pas de mise à jour de la date de dernier accès »&lt;br /&gt;
:À chaque fois qu&#039;on accède à un fichier, la date du dernier accès est modifiée. Dans un système de fichiers dans lequel existent de nombreux fichiers auxquels on accède souvent (c&#039;est le cas pour les serveurs de &#039;&#039;news&#039;&#039;), ces modifications peuvent ralentir le système. &lt;br /&gt;
:Donner à un fichier l&#039;attribut &#039;&#039;no atime updates&#039;&#039; permet d&#039;éviter ce problème. Noter que la même option existe lorsque l&#039;on monte une partition dans l&#039;arborescence globale (&amp;lt;code&amp;gt;mount -o noatime&amp;lt;/code&amp;gt;), option que l&#039;on peut inscrire dans [[fstab|/etc/fstab]].&lt;br /&gt;
;synchronous directory updates (D), « mise à jour synchone des répertoires »&lt;br /&gt;
;synchronous updates (S), « mise à jour synchrone »&lt;br /&gt;
:Ces deux attributs ont un effet similaire. Le premier sert aux répertoires, le second aux fichiers. Les données des répertoires et fichiers concernés sont mises à jour dès qu&#039;une modification a eu lieu (et non en différé, comme c&#039;est le cas par défaut pour &#039;&#039;ext2&#039;&#039; et &#039;&#039;ext3&#039;&#039;). C&#039;est l&#039;équivalent des options de montage &amp;lt;code&amp;gt;mount -o sync&amp;lt;/code&amp;gt; et &amp;lt;code&amp;gt;mount -o dirsync&amp;lt;/code&amp;gt; (qu&#039;on peut aussi passer dans &#039;&#039;fstab&#039;&#039;) mais pour une sous-partie de l&#039;arborescence et non la partition entière.&lt;br /&gt;
;top of directory hierarchy (T), « répertoire racine » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Cet attribut indique au répartiteur de blocs Orlov (ou &#039;&#039;[http://lwn.net/Articles/14633/ Orlov block allocator]&#039;&#039;, utilisé par le noyau Linux pour les systèmes de fichiers &#039;&#039;ext2&#039;&#039; et &#039;&#039;ext3&#039;&#039; depuis la version 2.5.46) que le répertoire concerné doit être considéré comme un répertoire racine de la hiérarchie des répertoires. &lt;br /&gt;
:L&#039;allocateur de blocs est un processus propre au système de fichier permettant de répartir les blocs de données des fichiers dans l&#039;espace disponible tout en garantissant une qu&#039;il ne se produira pas une trop grande fragmentation. Pour cela, on place généralement dans un même groupe de cylindres du disque dur les blocs de fichiers dépendant d&#039;un  même répertoire. Dans le cas contraire, les données risquent d&#039;être éparpillées, voire fragmentées (les blocs d&#039;un même fichier sont alors répartis sur plusieurs cylindres non contigus). On ne peut cependant prévoir à l&#039;avance de quel espace aura besoin un répertoire racine. Il pourrait ne contenir que peu de fichiers ou, au contraire, une arborescence complète et chargée. Le répartiteur Orlov prend donc soin d&#039;éloigner le plus possible les uns des autres les répertoires racines, pour qu&#039;ils disposent d&#039;un espace suffisant où croître.&lt;br /&gt;
:Ajouter cet attribut à un répertoire permet au répartiteur de le traiter comme un répertoire racine, même s&#039;il n&#039;en est pas un, et de le placer  loin des autres répertoires racines. Il est donc utile avec des sous-arborescences de fichiers complexes et lourdes qui risqueraient d&#039;être fragmentées.&lt;br /&gt;
&lt;br /&gt;
==Commandes==&lt;br /&gt;
ll existe deux commandes pour accéder aux attributs étendus : &#039;&#039;lsattr&#039;&#039; (&#039;&#039;list attributes&#039;&#039;, « lister les attributs ») &#039;&#039;chattr&#039;&#039; (&#039;&#039;change attributes&#039;&#039;, « changer les attributs »). Toutes deux sont incluses dans le paquetage &#039;&#039;e2fsprogs&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===chattr===&lt;br /&gt;
Cette commande s&#039;utilise quasiment comme un &#039;&#039;chmod&#039;&#039; simplifié : en effet, les attributs ne peuvent être indiqués que sous forme symbolique (dont les codes sont donnés ci-dessus) et non au moyen d&#039;un éventuel nombre octal.&lt;br /&gt;
&lt;br /&gt;
Ainsi, pour donner un attibut, on utilise la commande suivie de + et du code ; par exemple, rendre un fichier « immuable » se fait avec la commande (en root) :&lt;br /&gt;
&amp;lt;code&amp;gt;chattr +i fichier&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Retirer un attribut requiert l&#039;opérateur &amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt;. La commande pour enlever l&#039;attribut « immuable » est donc : &lt;br /&gt;
&amp;lt;code&amp;gt;chattr -i fichier&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enfin, pour faire en sorte qu&#039;un fichier n&#039;ait que l&#039;attribut « immuable » :&lt;br /&gt;
&amp;lt;code&amp;gt;chattr =i fichier&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La commande peut être utilisée de manière récursive au moyen de l&#039;option &amp;lt;code&amp;gt;-R&amp;lt;/code&amp;gt; : pour rendre toute une hiérarchie immuable, il suffit de : &lt;br /&gt;
&amp;lt;code&amp;gt;chattr -R + i répertoire/&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===lsattr===&lt;br /&gt;
Cette commande fonctionne comme &#039;&#039;ls&#039;&#039; et prend les options &amp;lt;code&amp;gt;-R&amp;lt;/code&amp;gt; (listage récursif), &amp;lt;code&amp;gt;-a&amp;lt;/code&amp;gt; (tout afficher) et &amp;lt;code&amp;gt;-d&amp;lt;/code&amp;gt; (lister les répertoires comme des fichiers), entre autres ; &#039;&#039;lsattr&#039;&#039; peut afficher des attributs qu&#039;on ne peut modifier avec &#039;&#039;chattr&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
L&#039;affichage est simple : chaque attribut du fichier est représenté par son code, une absence d&#039;attribut l&#039;étant par un &amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ainsi : &lt;br /&gt;
&amp;lt;code&amp;gt;chattr +ASacDdijsTtu fichier&lt;br /&gt;
lsattr fichier&lt;br /&gt;
    suS-iadAc----j-tT fichier&amp;lt;/code&amp;gt;&lt;br /&gt;
L&#039;attribut &amp;lt;code&amp;gt;D&amp;lt;/code&amp;gt; n&#039;a pas été appliqué, puisque le fichier n&#039;est pas un répertoire. &lt;br /&gt;
&lt;br /&gt;
Les autres valeurs que peut indiquer &#039;&#039;lsattr&#039;&#039; s&#039;intercalent dans les espaces vacants : &#039;&#039;E&#039;&#039;, &#039;&#039;I&#039;&#039;, &#039;&#039;X&#039;&#039; et &#039;&#039;Z&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
{{Copy|28.10.05|Vincent Ramos|FDL}}&lt;/div&gt;</summary>
		<author><name>Vincent Ramos</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Attributs_%C3%A9tendus&amp;diff=10159</id>
		<title>Attributs étendus</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Attributs_%C3%A9tendus&amp;diff=10159"/>
		<updated>2005-10-28T00:41:05Z</updated>

		<summary type="html">&lt;p&gt;Vincent Ramos : /* Types d&amp;#039;attributs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Les [[système de fichiers|systèmes de fichiers]] &#039;&#039;ext2&#039;&#039; et &#039;&#039;ext3&#039;&#039; (ainsi que &#039;&#039;reiserfs&#039;&#039; dans certaines conditions) offrent la possibilité de donner à des fichiers (fichiers réels ou répertoires) des &#039;&#039;&#039;attributs étendus&#039;&#039;&#039; qui s&#039;ajoutent aux [[permissions|permissions classiques POSIX.1]], éventuellement complétées par les [[ACL|permissions étendues ACL]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cadre type=&amp;quot;alert&amp;quot;&amp;gt;Seuls ces systèmes de fichiers offrant ces attributs, il n&#039;est pas prudent ─ en terme de sécurité ─ de s&#039;appuyer lourdement sur leur présence si l&#039;on est amené à transférer fréquemment des données d&#039;un système de fichiers &#039;&#039;ext&#039;&#039; à un autre. D&#039;autre part, il convient de tester ces possibilités : toutes les versions du noyau n&#039;en tiennent pas compte de la même manière.&amp;lt;/cadre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Mise en place==&lt;br /&gt;
Il n&#039;y a rien à faire pour des partitions en &#039;&#039;ext2&#039;&#039; ou &#039;&#039;ext3&#039;&#039;, qui respectent nativement les attributs étendus.&lt;br /&gt;
&lt;br /&gt;
Chose assez peu connue, cependant, le système de fichiers &#039;&#039;reiserfs&#039;&#039; peut respecter les attributs étendus, à condition d&#039;[[fstab|être monté]] avec l&#039;option idoine &amp;lt;code&amp;gt;attrs&amp;lt;/code&amp;gt;. Pour ce faire, les commandes suivantes sont appliquées : &lt;br /&gt;
* sur une partition non encore montée : &amp;lt;code&amp;gt;mount -t reiserfs -o attrs /dev/partition /point/de/montage&amp;lt;/code&amp;gt; ; &lt;br /&gt;
* sur une partition déjà montée : &amp;lt;code&amp;gt;mount -o attrs /point/de/montage&amp;lt;/code&amp;gt; (remontage à la volée).&lt;br /&gt;
&lt;br /&gt;
Pour que la prise en compte soit effective à chaque montage automatique (le cas échéant), il faut ajouter l&#039;option dans &#039;&#039;[[fstab|/etc/fstab]]&#039;&#039;. Par exemple : &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
/dev/hda1       /               reiserfs    defaults,acl,attrs 0       1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enfin, on peut recompiler son noyau avec l&#039;option &amp;lt;code&amp;gt;CONFIG_REISERFS_FS_XATTR = y&amp;lt;/code&amp;gt; pour que le mode &amp;lt;code&amp;gt;attr&amp;lt;/code&amp;gt; soit automatiquement appliqué lors du montage d&#039;une partition en &#039;&#039;reiserfs&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cadre type=&amp;quot;note&amp;quot;&amp;gt;Noter que des fichiers d&#039;une partition en &#039;&#039;reiserfs&#039;&#039; montée sans l&#039;option &amp;lt;code&amp;gt;attrs&amp;lt;/code&amp;gt; (ou la recompilation du noyau) peuvent recevoir des attributs étendus : ils seront bien enregistrés mais n&#039;auront aucun effet. La commande de modification d&#039;attributs, &#039;&#039;chattr&#039;&#039;, ne renverra donc aucun message d&#039;erreur sans pour autant que les attributs soient pris en compte. Ce détail peut avoir des répercussion pour la sécurité du système : on peut, à tort, croire protéger des fichiers.&amp;lt;/cadre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Types d&#039;attributs==&lt;br /&gt;
Selon la norme POSIX.1, tout fichier possède les permissions en lecture, écriture et exécution. On peut leur adjoindre des attributs supplémentaires, qui s&#039;imposent à tous les utilisateurs (dont root, qui peut cependant annuler ces attributs) quand ils modifient les actions qu&#039;on peut avoir sur eux. Certains attributs sont encore expérimentaux (octobre 2005) et nécessitent de patcher le noyau pour qu&#039;ils aient un effet réel. &lt;br /&gt;
;append only (a), « ajouter seulement » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Protège le fichier contre la suppression de contenu : on ne peut que lui en ajouter. &lt;br /&gt;
;compressed (c), « compressé » ─ &#039;&#039;expérimental&#039;&#039;&lt;br /&gt;
:Le fichier est automatiquement compressé ─ si c&#039;est utile, et avec un format de compression le plus efficace ─ quand il est stocké. La décompression lors de la lecture et la compression des données ajoutées au fichier par la suite se font à la volée, de manière transparente pour l&#039;utilisateur (la commande &amp;lt;code&amp;gt;ls -l&amp;lt;/code&amp;gt;, par exemple, montre la taille décompressée). &lt;br /&gt;
:Cet attribut appliqué à un répertoire ne le compresse pas mais fait se compresser automatiquement tout nouveau fichier qu&#039;on y crée.&lt;br /&gt;
;no dump (d), « pas de sauvegarde »&lt;br /&gt;
:Un fichier ainsi marqué sera ignoré par la commande de sauvegarde &#039;&#039;dump&#039;&#039; (qui ne fonctionne que pour &#039;&#039;ext2&#039;&#039; et &#039;&#039;ext3&#039;&#039;). Cet attribut est utile pour empêcher la sauvegarde par &#039;&#039;dump&#039;&#039; d&#039;un fichier ou répertoire situés dans un système de fichiers monté avec l&#039;option &amp;lt;code&amp;gt;dump&amp;lt;/code&amp;gt; positionnée à &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; (cf &#039;&#039;[[fstab]]&#039;&#039;).&lt;br /&gt;
;immutable (i), « immuable » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Protège le fichier contre toute modification (suppression, modification, déplacement, changements de permissions), même par root, et empêche qu&#039;on crée un lien vers lui. Seule la modification des attributs étendus est permise à son propriétaire et seul root peut enlever l&#039;attribut « immuable » d&#039;un fichier.&lt;br /&gt;
:Cet attribut est sans doute l&#039;un des plus intéressants.&lt;br /&gt;
;data journalling (j), « journalisation des données » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Cet attribut n&#039;est utile qu&#039;avec une partition en &#039;&#039;ext3&#039;&#039; montée avec les options de journalisation des données &amp;lt;code&amp;gt;data=ordered&amp;lt;/code&amp;gt; (montage par défaut) ou &amp;lt;code&amp;gt;data=writeback&amp;lt;/code&amp;gt; pour simuler une journalisation du type &amp;lt;code&amp;gt;data=journal&amp;lt;/code&amp;gt;, où les données sont écrites dans le journal avant de l&#039;être dans le fichier lui-même. Consulter &amp;lt;code&amp;gt;man mount 8&amp;lt;/code&amp;gt; pour plus de détails sur les mécanismes de journalisation d&#039;&#039;&#039;ext3&#039;&#039;. &lt;br /&gt;
:Sur une partition &#039;&#039;ext3&#039;&#039; en mode &amp;lt;code&amp;gt;data=journal&amp;lt;/code&amp;gt;, cet attribut est ignoré, de même que sur les partitions en &#039;&#039;ext2&#039;&#039; et &#039;&#039;reiserfs&#039;&#039;, le premier type n&#039;étant pas journalisé, le second l&#039;étant d&#039;une manière incompatible.&lt;br /&gt;
;secure deletion (s), « effacement sécurisé »  ─ &#039;&#039;expérimental&#039;&#039;&lt;br /&gt;
:Un fichier portant cet attribut est non seulement « effacé » mais en plus les blocs qu&#039;il occupait dans le système de fichiers sont recouverts de zéros pour éviter qu&#039;on puisse récupérer les données malgré l&#039;effacement. &lt;br /&gt;
:Normalement, effacer un fichier consiste seulement à détruire toute référence vers l&#039;espace occupé par les données de ce fichier dans la partition. Il n&#039;est cependant pas question de détruire physiquement les données elles-mêmes, sauf si le fichier possède cet attribut, auquel cas non seulement il n&#039;est plus accessible mais en plus tous ses bits sont réécrits.&lt;br /&gt;
;no tail-merging (t)&lt;br /&gt;
;undeletable (u), « ineffaçable » ─ &#039;&#039;&#039;expérimental&#039;&#039;&#039;&lt;br /&gt;
:Lors d&#039;un effacement, les références vers l&#039;espace du système de fichiers qui contient les données sont détruites, mais pas les données. Sans ces références, cependant, l&#039;espace anciennement réservé peut être utilisé par des fichiers nouvellement créés ou ayant été augmentés. Dans ce cas, il n&#039;est plus possible de récupérer les données en question. &lt;br /&gt;
:L&#039;attribut « ineffaçable » permet de préserver les blocs qui contenaient les données de façon à ce qu&#039;on puisse les récupérer si besoin est. L&#039;espace-disque n&#039;est donc pas libéré.&lt;br /&gt;
;no atime updates (A), « pas de mise à jour de la date de dernier accès »&lt;br /&gt;
:À chaque fois qu&#039;on accède à un fichier, la date du dernier accès est modifiée. Dans un système de fichiers dans lequel existent de nombreux fichiers auxquels on accède souvent (c&#039;est le cas pour les serveurs de &#039;&#039;news&#039;&#039;), ces modifications peuvent ralentir le système. &lt;br /&gt;
:Donner à un fichier l&#039;attribut &#039;&#039;no atime updates&#039;&#039; permet d&#039;éviter ce problème. Noter que la même option existe lorsque l&#039;on monte une partition dans l&#039;arborescence globale (&amp;lt;code&amp;gt;mount -o noatime&amp;lt;/code&amp;gt;), option que l&#039;on peut inscrire dans [[fstab|/etc/fstab]].&lt;br /&gt;
;synchronous directory updates (D), « mise à jour synchone des répertoires »&lt;br /&gt;
;synchronous updates (S), « mise à jour synchrone »&lt;br /&gt;
:Ces deux attributs ont un effet similaire. Le premier sert aux répertoires, le second aux fichiers. Les données des répertoires et fichiers concernés sont mises à jour dès qu&#039;une modification a eu lieu (et non en différé, comme c&#039;est le cas par défaut pour &#039;&#039;ext2&#039;&#039; et &#039;&#039;ext3&#039;&#039;). C&#039;est l&#039;équivalent de l&#039;option de montage &amp;lt;code&amp;gt;mount -o sync&amp;lt;/code&amp;gt; (qu&#039;on peut aussi passer dans &#039;&#039;fstab&#039;&#039;) mais pour une sous-partie de l&#039;arborescence et non la partition entière.&lt;br /&gt;
;top of directory hierarchy (T), « répertoire racine » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Cet attribut indique au répartiteur de blocs Orlov (ou &#039;&#039;[http://lwn.net/Articles/14633/ Orlov block allocator]&#039;&#039;, utilisé par le noyau Linux pour les systèmes de fichiers &#039;&#039;ext2&#039;&#039; et &#039;&#039;ext3&#039;&#039; depuis la version 2.5.46) que le répertoire concerné doit être considéré comme un répertoire racine de la hiérarchie des répertoires. &lt;br /&gt;
:L&#039;allocateur de blocs est un processus propre au système de fichier permettant de répartir les blocs de données des fichiers dans l&#039;espace disponible tout en garantissant une qu&#039;il ne se produira pas une trop grande fragmentation. Pour cela, on place généralement dans un même groupe de cylindres du disque dur les blocs de fichiers dépendant d&#039;un  même répertoire. Dans le cas contraire, les données risquent d&#039;être éparpillées, voire fragmentées (les blocs d&#039;un même fichier sont alors répartis sur plusieurs cylindres non contigus). On ne peut cependant prévoir à l&#039;avance de quel espace aura besoin un répertoire racine. Il pourrait ne contenir que peu de fichiers ou, au contraire, une arborescence complète et chargée. Le répartiteur Orlov prend donc soin d&#039;éloigner le plus possible les uns des autres les répertoires racines, pour qu&#039;ils disposent d&#039;un espace suffisant où croître.&lt;br /&gt;
:Ajouter cet attribut à un répertoire permet au répartiteur de le traiter comme un répertoire racine, même s&#039;il n&#039;en est pas un, et de le placer  loin des autres répertoires racines. Il est donc utile avec des sous-arborescences de fichiers complexes et lourdes qui risqueraient d&#039;être fragmentées.&lt;br /&gt;
&lt;br /&gt;
==Commandes==&lt;br /&gt;
ll existe deux commandes pour accéder aux attributs étendus : &#039;&#039;lsattr&#039;&#039; (&#039;&#039;list attributes&#039;&#039;, « lister les attributs ») &#039;&#039;chattr&#039;&#039; (&#039;&#039;change attributes&#039;&#039;, « changer les attributs »). Toutes deux sont incluses dans le paquetage &#039;&#039;e2fsprogs&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===chattr===&lt;br /&gt;
Cette commande s&#039;utilise quasiment comme un &#039;&#039;chmod&#039;&#039; simplifié : en effet, les attributs ne peuvent être indiqués que sous forme symbolique (dont les codes sont donnés ci-dessus) et non au moyen d&#039;un éventuel nombre octal.&lt;br /&gt;
&lt;br /&gt;
Ainsi, pour donner un attibut, on utilise la commande suivie de + et du code ; par exemple, rendre un fichier « immuable » se fait avec la commande (en root) :&lt;br /&gt;
&amp;lt;code&amp;gt;chattr +i fichier&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Retirer un attribut requiert l&#039;opérateur &amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt;. La commande pour enlever l&#039;attribut « immuable » est donc : &lt;br /&gt;
&amp;lt;code&amp;gt;chattr -i fichier&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enfin, pour faire en sorte qu&#039;un fichier n&#039;ait que l&#039;attribut « immuable » :&lt;br /&gt;
&amp;lt;code&amp;gt;chattr =i fichier&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La commande peut être utilisée de manière récursive au moyen de l&#039;option &amp;lt;code&amp;gt;-R&amp;lt;/code&amp;gt; : pour rendre toute une hiérarchie immuable, il suffit de : &lt;br /&gt;
&amp;lt;code&amp;gt;chattr -R + i répertoire/&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===lsattr===&lt;br /&gt;
Cette commande fonctionne comme &#039;&#039;ls&#039;&#039; et prend les options &amp;lt;code&amp;gt;-R&amp;lt;/code&amp;gt; (listage récursif), &amp;lt;code&amp;gt;-a&amp;lt;/code&amp;gt; (tout afficher) et &amp;lt;code&amp;gt;-d&amp;lt;/code&amp;gt; (lister les répertoires comme des fichiers), entre autres ; &#039;&#039;lsattr&#039;&#039; peut afficher des attributs qu&#039;on ne peut modifier avec &#039;&#039;chattr&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
L&#039;affichage est simple : chaque attribut du fichier est représenté par son code, une absence d&#039;attribut l&#039;étant par un &amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ainsi : &lt;br /&gt;
&amp;lt;code&amp;gt;chattr +ASacDdijsTtu fichier&lt;br /&gt;
lsattr fichier&lt;br /&gt;
    suS-iadAc----j-tT fichier&amp;lt;/code&amp;gt;&lt;br /&gt;
L&#039;attribut &amp;lt;code&amp;gt;D&amp;lt;/code&amp;gt; n&#039;a pas été appliqué, puisque le fichier n&#039;est pas un répertoire. &lt;br /&gt;
&lt;br /&gt;
Les autres valeurs que peut indiquer &#039;&#039;lsattr&#039;&#039; s&#039;intercalent dans les espaces vacants : &#039;&#039;E&#039;&#039;, &#039;&#039;I&#039;&#039;, &#039;&#039;X&#039;&#039; et &#039;&#039;Z&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
{{Copy|28.10.05|Vincent Ramos|FDL}}&lt;/div&gt;</summary>
		<author><name>Vincent Ramos</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Attributs_%C3%A9tendus&amp;diff=10158</id>
		<title>Attributs étendus</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Attributs_%C3%A9tendus&amp;diff=10158"/>
		<updated>2005-10-28T00:38:48Z</updated>

		<summary type="html">&lt;p&gt;Vincent Ramos : /* Types d&amp;#039;attributs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Les [[système de fichiers|systèmes de fichiers]] &#039;&#039;ext2&#039;&#039; et &#039;&#039;ext3&#039;&#039; (ainsi que &#039;&#039;reiserfs&#039;&#039; dans certaines conditions) offrent la possibilité de donner à des fichiers (fichiers réels ou répertoires) des &#039;&#039;&#039;attributs étendus&#039;&#039;&#039; qui s&#039;ajoutent aux [[permissions|permissions classiques POSIX.1]], éventuellement complétées par les [[ACL|permissions étendues ACL]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cadre type=&amp;quot;alert&amp;quot;&amp;gt;Seuls ces systèmes de fichiers offrant ces attributs, il n&#039;est pas prudent ─ en terme de sécurité ─ de s&#039;appuyer lourdement sur leur présence si l&#039;on est amené à transférer fréquemment des données d&#039;un système de fichiers &#039;&#039;ext&#039;&#039; à un autre. D&#039;autre part, il convient de tester ces possibilités : toutes les versions du noyau n&#039;en tiennent pas compte de la même manière.&amp;lt;/cadre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Mise en place==&lt;br /&gt;
Il n&#039;y a rien à faire pour des partitions en &#039;&#039;ext2&#039;&#039; ou &#039;&#039;ext3&#039;&#039;, qui respectent nativement les attributs étendus.&lt;br /&gt;
&lt;br /&gt;
Chose assez peu connue, cependant, le système de fichiers &#039;&#039;reiserfs&#039;&#039; peut respecter les attributs étendus, à condition d&#039;[[fstab|être monté]] avec l&#039;option idoine &amp;lt;code&amp;gt;attrs&amp;lt;/code&amp;gt;. Pour ce faire, les commandes suivantes sont appliquées : &lt;br /&gt;
* sur une partition non encore montée : &amp;lt;code&amp;gt;mount -t reiserfs -o attrs /dev/partition /point/de/montage&amp;lt;/code&amp;gt; ; &lt;br /&gt;
* sur une partition déjà montée : &amp;lt;code&amp;gt;mount -o attrs /point/de/montage&amp;lt;/code&amp;gt; (remontage à la volée).&lt;br /&gt;
&lt;br /&gt;
Pour que la prise en compte soit effective à chaque montage automatique (le cas échéant), il faut ajouter l&#039;option dans &#039;&#039;[[fstab|/etc/fstab]]&#039;&#039;. Par exemple : &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
/dev/hda1       /               reiserfs    defaults,acl,attrs 0       1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enfin, on peut recompiler son noyau avec l&#039;option &amp;lt;code&amp;gt;CONFIG_REISERFS_FS_XATTR = y&amp;lt;/code&amp;gt; pour que le mode &amp;lt;code&amp;gt;attr&amp;lt;/code&amp;gt; soit automatiquement appliqué lors du montage d&#039;une partition en &#039;&#039;reiserfs&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cadre type=&amp;quot;note&amp;quot;&amp;gt;Noter que des fichiers d&#039;une partition en &#039;&#039;reiserfs&#039;&#039; montée sans l&#039;option &amp;lt;code&amp;gt;attrs&amp;lt;/code&amp;gt; (ou la recompilation du noyau) peuvent recevoir des attributs étendus : ils seront bien enregistrés mais n&#039;auront aucun effet. La commande de modification d&#039;attributs, &#039;&#039;chattr&#039;&#039;, ne renverra donc aucun message d&#039;erreur sans pour autant que les attributs soient pris en compte. Ce détail peut avoir des répercussion pour la sécurité du système : on peut, à tort, croire protéger des fichiers.&amp;lt;/cadre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Types d&#039;attributs==&lt;br /&gt;
Selon la norme POSIX.1, tout fichier possède les permissions en lecture, écriture et exécution. On peut leur adjoindre des attributs supplémentaires, qui s&#039;imposent à tous les utilisateurs (dont root, qui peut cependant annuler ces attributs) quand ils modifient les actions qu&#039;on peut avoir sur eux. Certains attributs sont encore expérimentaux (octobre 2005) et nécessitent de patcher le noyau pour qu&#039;ils aient un effet réel. &lt;br /&gt;
;append only (a), « ajouter seulement » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Protège le fichier contre la suppression de contenu : on ne peut que lui en ajouter. &lt;br /&gt;
;compressed (c), « compressé » ─ &#039;&#039;expérimental&#039;&#039;&lt;br /&gt;
:Le fichier est automatiquement compressé ─ si c&#039;est utile, et avec un format de compression le plus efficace ─ quand il est stocké. La décompression lors de la lecture et la compression des données ajoutées au fichier par la suite se font à la volée, de manière transparente pour l&#039;utilisateur (la commande &amp;lt;code&amp;gt;ls -l&amp;lt;/code&amp;gt;, par exemple, montre la taille décompressée). &lt;br /&gt;
:Cet attribut appliqué à un répertoire ne le compresse pas mais fait se compresser automatiquement tout nouveau fichier qu&#039;on y crée.&lt;br /&gt;
;no dump (d), « pas de sauvegarde »&lt;br /&gt;
:Un fichier ainsi marqué sera ignoré par la commande de sauvegarde &#039;&#039;dump&#039;&#039; (qui ne fonctionne que pour &#039;&#039;ext2&#039;&#039; et &#039;&#039;ext3&#039;&#039;). Cet attribut est utile pour empêcher la sauvegarde par &#039;&#039;dump&#039;&#039; d&#039;un fichier ou répertoire situés dans un système de fichiers monté avec l&#039;option &amp;lt;code&amp;gt;dump&amp;lt;/code&amp;gt; positionnée à &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; (cf &#039;&#039;[[fstab]]&#039;&#039;).&lt;br /&gt;
;immutable (i), « immuable » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Protège le fichier contre toute modification (suppression, modification, déplacement, changements de permissions), même par root, et empêche qu&#039;on crée un lien vers lui. Seule la modification des attributs étendus est permise à son propriétaire et seul root peut enlever l&#039;attribut « immuable » d&#039;un fichier.&lt;br /&gt;
:Cet attribut est sans doute l&#039;un des plus intéressants.&lt;br /&gt;
;data journalling (j), « journalisation des données » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Cet attribut n&#039;est utile qu&#039;avec une partition en &#039;&#039;ext3&#039;&#039; montée avec les options de journalisation des données &amp;lt;code&amp;gt;data=ordered&amp;lt;/code&amp;gt; (montage par défaut) ou &amp;lt;code&amp;gt;data=writeback&amp;lt;/code&amp;gt; pour simuler une journalisation du type &amp;lt;code&amp;gt;data=journal&amp;lt;/code&amp;gt;, où les données sont écrites dans le journal avant de l&#039;être dans le fichier lui-même. Consulter &amp;lt;code&amp;gt;man mount 8&amp;lt;/code&amp;gt; pour plus de détails sur les mécanismes de journalisation d&#039;&#039;&#039;ext3&#039;&#039;. &lt;br /&gt;
:Sur une partition &#039;&#039;ext3&#039;&#039; en mode &amp;lt;code&amp;gt;data=journal&amp;lt;/code&amp;gt;, cet attribut est ignoré, de même que sur les partitions en &#039;&#039;ext2&#039;&#039; et &#039;&#039;reiserfs&#039;&#039;, le premier type n&#039;étant pas journalisé, le second l&#039;étant d&#039;une manière incompatible.&lt;br /&gt;
;secure deletion (s), « effacement sécurisé »  ─ &#039;&#039;expérimental&#039;&#039;&lt;br /&gt;
:Un fichier portant cet attribut est non seulement « effacé » mais en plus les blocs qu&#039;il occupait dans le système de fichiers sont recouverts de zéros pour éviter qu&#039;on puisse récupérer les données malgré l&#039;effacement. &lt;br /&gt;
:Normalement, effacer un fichier consiste seulement à détruire toute référence vers l&#039;espace occupé par les données de ce fichier dans la partition. Il n&#039;est cependant pas question de détruire physiquement les données elles-mêmes, sauf si le fichier possède cet attribut, auquel cas non seulement il n&#039;est plus accessible mais en plus tous ses bits sont réécrits.&lt;br /&gt;
;no tail-merging (t)&lt;br /&gt;
;undeletable (u), « ineffaçable » ─ &#039;&#039;&#039;expérimental&#039;&#039;&#039;&lt;br /&gt;
:Lors d&#039;un effacement, les références vers l&#039;espace du système de fichiers qui contient les données sont détruites, mais pas les données. Sans ces références, cependant, l&#039;espace anciennement réservé peut être utilisé par des fichiers nouvellement créés ou ayant été augmentés. Dans ce cas, il n&#039;est plus possible de récupérer les données en question. &lt;br /&gt;
:L&#039;attribut « ineffaçable » permet de préserver les blocs qui contenaient les données de façon à ce qu&#039;on puisse les récupérer si besoin est. L&#039;espace-disque n&#039;est donc pas libéré.&lt;br /&gt;
;no atime updates (A), « pas de mise à jour de la date de dernier accès »&lt;br /&gt;
:À chaque fois qu&#039;on accède à un fichier, la date du dernier accès est modifiée. Dans un système de fichiers dans lequel existent de nombreux fichiers auxquels on accède souvent (c&#039;est le cas pour les serveurs de &#039;&#039;news&#039;&#039;), ces modifications peuvent ralentir le système. &lt;br /&gt;
:Donner à un fichier l&#039;attribut &#039;&#039;no atime updates&#039;&#039; permet d&#039;éviter ce problème. Noter que la même option existe lorsque l&#039;on monte une partition dans l&#039;arborescence globale (&amp;lt;code&amp;gt;mount -o noatime&amp;lt;/code&amp;gt;), option que l&#039;on peut inscrire dans [[fstab|/etc/fstab]].&lt;br /&gt;
;synchronous directory updates (D), « mise à jour synchone des répertoires »&lt;br /&gt;
;synchronous updates (S), « mise à jour synchrone »&lt;br /&gt;
:Ces deux attributs ont un effet similaire. Le premier sert aux répertoires, le second aux fichiers. Ceux qui portent cet attributs sont mis à jour dès qu&#039;une modification a eu lieu. C&#039;est l&#039;équivalent de l&#039;option de montage &amp;lt;code&amp;gt;mount -o sync&amp;lt;/code&amp;gt; (qu&#039;on peut aussi passer dans &#039;&#039;fstab&#039;&#039;) mais pour une sous-partie de l&#039;arborescence et non la partition entière.&lt;br /&gt;
;top of directory hierarchy (T), « répertoire racine » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Cet attribut indique au répartiteur de blocs Orlov (ou &#039;&#039;[http://lwn.net/Articles/14633/ Orlov block allocator]&#039;&#039;, utilisé par le noyau Linux pour les systèmes de fichiers &#039;&#039;ext2&#039;&#039; et &#039;&#039;ext3&#039;&#039; depuis la version 2.5.46) que le répertoire concerné doit être considéré comme un répertoire racine de la hiérarchie des répertoires. &lt;br /&gt;
:L&#039;allocateur de blocs est un processus propre au système de fichier permettant de répartir les blocs de données des fichiers dans l&#039;espace disponible tout en garantissant une qu&#039;il ne se produira pas une trop grande fragmentation. Pour cela, on place généralement dans un même groupe de cylindres du disque dur les blocs de fichiers dépendant d&#039;un  même répertoire. Dans le cas contraire, les données risquent d&#039;être éparpillées, voire fragmentées (les blocs d&#039;un même fichier sont alors répartis sur plusieurs cylindres non contigus). On ne peut cependant prévoir à l&#039;avance de quel espace aura besoin un répertoire racine. Il pourrait ne contenir que peu de fichiers ou, au contraire, une arborescence complète et chargée. Le répartiteur Orlov prend donc soin d&#039;éloigner le plus possible les uns des autres les répertoires racines, pour qu&#039;ils disposent d&#039;un espace suffisant où croître.&lt;br /&gt;
:Ajouter cet attribut à un répertoire permet au répartiteur de le traiter comme un répertoire racine, même s&#039;il n&#039;en est pas un, et de le placer  loin des autres répertoires racines. Il est donc utile avec des sous-arborescences de fichiers complexes et lourdes qui risqueraient d&#039;être fragmentées.&lt;br /&gt;
&lt;br /&gt;
==Commandes==&lt;br /&gt;
ll existe deux commandes pour accéder aux attributs étendus : &#039;&#039;lsattr&#039;&#039; (&#039;&#039;list attributes&#039;&#039;, « lister les attributs ») &#039;&#039;chattr&#039;&#039; (&#039;&#039;change attributes&#039;&#039;, « changer les attributs »). Toutes deux sont incluses dans le paquetage &#039;&#039;e2fsprogs&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===chattr===&lt;br /&gt;
Cette commande s&#039;utilise quasiment comme un &#039;&#039;chmod&#039;&#039; simplifié : en effet, les attributs ne peuvent être indiqués que sous forme symbolique (dont les codes sont donnés ci-dessus) et non au moyen d&#039;un éventuel nombre octal.&lt;br /&gt;
&lt;br /&gt;
Ainsi, pour donner un attibut, on utilise la commande suivie de + et du code ; par exemple, rendre un fichier « immuable » se fait avec la commande (en root) :&lt;br /&gt;
&amp;lt;code&amp;gt;chattr +i fichier&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Retirer un attribut requiert l&#039;opérateur &amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt;. La commande pour enlever l&#039;attribut « immuable » est donc : &lt;br /&gt;
&amp;lt;code&amp;gt;chattr -i fichier&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enfin, pour faire en sorte qu&#039;un fichier n&#039;ait que l&#039;attribut « immuable » :&lt;br /&gt;
&amp;lt;code&amp;gt;chattr =i fichier&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La commande peut être utilisée de manière récursive au moyen de l&#039;option &amp;lt;code&amp;gt;-R&amp;lt;/code&amp;gt; : pour rendre toute une hiérarchie immuable, il suffit de : &lt;br /&gt;
&amp;lt;code&amp;gt;chattr -R + i répertoire/&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===lsattr===&lt;br /&gt;
Cette commande fonctionne comme &#039;&#039;ls&#039;&#039; et prend les options &amp;lt;code&amp;gt;-R&amp;lt;/code&amp;gt; (listage récursif), &amp;lt;code&amp;gt;-a&amp;lt;/code&amp;gt; (tout afficher) et &amp;lt;code&amp;gt;-d&amp;lt;/code&amp;gt; (lister les répertoires comme des fichiers), entre autres ; &#039;&#039;lsattr&#039;&#039; peut afficher des attributs qu&#039;on ne peut modifier avec &#039;&#039;chattr&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
L&#039;affichage est simple : chaque attribut du fichier est représenté par son code, une absence d&#039;attribut l&#039;étant par un &amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ainsi : &lt;br /&gt;
&amp;lt;code&amp;gt;chattr +ASacDdijsTtu fichier&lt;br /&gt;
lsattr fichier&lt;br /&gt;
    suS-iadAc----j-tT fichier&amp;lt;/code&amp;gt;&lt;br /&gt;
L&#039;attribut &amp;lt;code&amp;gt;D&amp;lt;/code&amp;gt; n&#039;a pas été appliqué, puisque le fichier n&#039;est pas un répertoire. &lt;br /&gt;
&lt;br /&gt;
Les autres valeurs que peut indiquer &#039;&#039;lsattr&#039;&#039; s&#039;intercalent dans les espaces vacants : &#039;&#039;E&#039;&#039;, &#039;&#039;I&#039;&#039;, &#039;&#039;X&#039;&#039; et &#039;&#039;Z&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
{{Copy|28.10.05|Vincent Ramos|FDL}}&lt;/div&gt;</summary>
		<author><name>Vincent Ramos</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Attributs_%C3%A9tendus&amp;diff=10157</id>
		<title>Attributs étendus</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Attributs_%C3%A9tendus&amp;diff=10157"/>
		<updated>2005-10-28T00:17:58Z</updated>

		<summary type="html">&lt;p&gt;Vincent Ramos : /* Types d&amp;#039;attributs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Les [[système de fichiers|systèmes de fichiers]] &#039;&#039;ext2&#039;&#039; et &#039;&#039;ext3&#039;&#039; (ainsi que &#039;&#039;reiserfs&#039;&#039; dans certaines conditions) offrent la possibilité de donner à des fichiers (fichiers réels ou répertoires) des &#039;&#039;&#039;attributs étendus&#039;&#039;&#039; qui s&#039;ajoutent aux [[permissions|permissions classiques POSIX.1]], éventuellement complétées par les [[ACL|permissions étendues ACL]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cadre type=&amp;quot;alert&amp;quot;&amp;gt;Seuls ces systèmes de fichiers offrant ces attributs, il n&#039;est pas prudent ─ en terme de sécurité ─ de s&#039;appuyer lourdement sur leur présence si l&#039;on est amené à transférer fréquemment des données d&#039;un système de fichiers &#039;&#039;ext&#039;&#039; à un autre. D&#039;autre part, il convient de tester ces possibilités : toutes les versions du noyau n&#039;en tiennent pas compte de la même manière.&amp;lt;/cadre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Mise en place==&lt;br /&gt;
Il n&#039;y a rien à faire pour des partitions en &#039;&#039;ext2&#039;&#039; ou &#039;&#039;ext3&#039;&#039;, qui respectent nativement les attributs étendus.&lt;br /&gt;
&lt;br /&gt;
Chose assez peu connue, cependant, le système de fichiers &#039;&#039;reiserfs&#039;&#039; peut respecter les attributs étendus, à condition d&#039;[[fstab|être monté]] avec l&#039;option idoine &amp;lt;code&amp;gt;attrs&amp;lt;/code&amp;gt;. Pour ce faire, les commandes suivantes sont appliquées : &lt;br /&gt;
* sur une partition non encore montée : &amp;lt;code&amp;gt;mount -t reiserfs -o attrs /dev/partition /point/de/montage&amp;lt;/code&amp;gt; ; &lt;br /&gt;
* sur une partition déjà montée : &amp;lt;code&amp;gt;mount -o attrs /point/de/montage&amp;lt;/code&amp;gt; (remontage à la volée).&lt;br /&gt;
&lt;br /&gt;
Pour que la prise en compte soit effective à chaque montage automatique (le cas échéant), il faut ajouter l&#039;option dans &#039;&#039;[[fstab|/etc/fstab]]&#039;&#039;. Par exemple : &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
/dev/hda1       /               reiserfs    defaults,acl,attrs 0       1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enfin, on peut recompiler son noyau avec l&#039;option &amp;lt;code&amp;gt;CONFIG_REISERFS_FS_XATTR = y&amp;lt;/code&amp;gt; pour que le mode &amp;lt;code&amp;gt;attr&amp;lt;/code&amp;gt; soit automatiquement appliqué lors du montage d&#039;une partition en &#039;&#039;reiserfs&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cadre type=&amp;quot;note&amp;quot;&amp;gt;Noter que des fichiers d&#039;une partition en &#039;&#039;reiserfs&#039;&#039; montée sans l&#039;option &amp;lt;code&amp;gt;attrs&amp;lt;/code&amp;gt; (ou la recompilation du noyau) peuvent recevoir des attributs étendus : ils seront bien enregistrés mais n&#039;auront aucun effet. La commande de modification d&#039;attributs, &#039;&#039;chattr&#039;&#039;, ne renverra donc aucun message d&#039;erreur sans pour autant que les attributs soient pris en compte. Ce détail peut avoir des répercussion pour la sécurité du système : on peut, à tort, croire protéger des fichiers.&amp;lt;/cadre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Types d&#039;attributs==&lt;br /&gt;
Selon la norme POSIX.1, tout fichier possède les permissions en lecture, écriture et exécution. On peut leur adjoindre des attributs supplémentaires, qui s&#039;imposent à tous les utilisateurs (dont root, qui peut cependant annuler ces attributs) quand ils modifient les actions qu&#039;on peut avoir sur eux. Certains attributs sont encore expérimentaux (octobre 2005) et nécessitent de patcher le noyau pour qu&#039;ils aient un effet réel. &lt;br /&gt;
;append only (a), « ajouter seulement » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Protège le fichier contre la suppression de contenu : on ne peut que lui en ajouter. &lt;br /&gt;
;compressed (c), « compressé » ─ &#039;&#039;expérimental&#039;&#039;&lt;br /&gt;
:Le fichier est automatiquement compressé ─ si c&#039;est utile, et avec un format de compression le plus efficace ─ quand il est stocké. La décompression lors de la lecture et la compression des données ajoutées au fichier par la suite se font à la volée, de manière transparente pour l&#039;utilisateur (la commande &amp;lt;code&amp;gt;ls -l&amp;lt;/code&amp;gt;, par exemple, montre la taille décompressée). &lt;br /&gt;
:Cet attribut appliqué à un répertoire ne le compresse pas mais fait se compresser automatiquement tout nouveau fichier qu&#039;on y crée.&lt;br /&gt;
;no dump (d), « pas de sauvegarde »&lt;br /&gt;
:Un fichier ainsi marqué sera ignoré par la commande de sauvegarde &#039;&#039;dump&#039;&#039; (qui ne fonctionne que pour &#039;&#039;ext2&#039;&#039; et &#039;&#039;ext3&#039;&#039;). Cet attribut est utile pour empêcher la sauvegarde par &#039;&#039;dump&#039;&#039; d&#039;un fichier ou répertoire situés dans un système de fichiers monté avec l&#039;option &amp;lt;code&amp;gt;dump&amp;lt;/code&amp;gt; positionnée à &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; (cf &#039;&#039;[[fstab]]&#039;&#039;).&lt;br /&gt;
;immutable (i), « immuable » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Protège le fichier contre toute modification (suppression, modification, déplacement, changements de permissions), même par root, et empêche qu&#039;on crée un lien vers lui. Seule la modification des attributs étendus est permise à son propriétaire et seul root peut enlever l&#039;attribut « immuable » d&#039;un fichier.&lt;br /&gt;
:Cet attribut est sans doute l&#039;un des plus intéressants.&lt;br /&gt;
;data journalling (j), « journalisation des données » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Cet attribut n&#039;est utile qu&#039;avec une partition en &#039;&#039;ext3&#039;&#039; montée avec les options de journalisation des données &amp;lt;code&amp;gt;data=ordered&amp;lt;/code&amp;gt; (montage par défaut) ou &amp;lt;code&amp;gt;data=writeback&amp;lt;/code&amp;gt; pour simuler une journalisation du type &amp;lt;code&amp;gt;data=journal&amp;lt;/code&amp;gt;, où les données sont écrites dans le journal avant de l&#039;être dans le fichier lui-même. Consulter &amp;lt;code&amp;gt;man mount 8&amp;lt;/code&amp;gt; pour plus de détails sur les mécanismes de journalisation d&#039;&#039;&#039;ext3&#039;&#039;. &lt;br /&gt;
:Sur une partition &#039;&#039;ext3&#039;&#039; en mode &amp;lt;code&amp;gt;data=journal&amp;lt;/code&amp;gt;, cet attribut est ignoré, de même que sur les partitions en &#039;&#039;ext2&#039;&#039; et &#039;&#039;reiserfs&#039;&#039;, le premier type n&#039;étant pas journalisé, le second l&#039;étant d&#039;une manière incompatible.&lt;br /&gt;
;secure deletion (s), « effacement sécurisé »  ─ &#039;&#039;expérimental&#039;&#039;&lt;br /&gt;
:Un fichier portant cet attribut est non seulement « effacé » mais en plus les blocs qu&#039;il occupait dans le système de fichiers sont recouverts de zéros pour éviter qu&#039;on puisse récupérer les données malgré l&#039;effacement. &lt;br /&gt;
:Normalement, effacer un fichier consiste seulement à détruire toute référence vers l&#039;espace occupé par les données de ce fichier dans la partition. Il n&#039;est cependant pas question de détruire physiquement les données elles-mêmes, sauf si le fichier possède cet attribut, auquel cas non seulement il n&#039;est plus accessible mais en plus tous ses bits sont réécrits.&lt;br /&gt;
;no tail-merging (t)&lt;br /&gt;
;undeletable (u), « ineffaçable » ─ &#039;&#039;&#039;expérimental&#039;&#039;&#039;&lt;br /&gt;
:Lors d&#039;un effacement, les références vers l&#039;espace du système de fichiers qui contient les données sont détruites, mais pas les données. Sans ces références, cependant, l&#039;espace anciennement réservé peut être utilisé par des fichiers nouvellement créés ou ayant été augmentés. Dans ce cas, il n&#039;est plus possible de récupérer les données en question. &lt;br /&gt;
:L&#039;attribut « ineffaçable » permet de préserver les blocs qui contenaient les données de façon à ce qu&#039;on puisse les récupérer si besoin est. L&#039;espace-disque n&#039;est donc pas libéré.&lt;br /&gt;
;no atime updates (A), « pas de mise à jour de la date de dernier accès »&lt;br /&gt;
:À chaque fois qu&#039;on accède à un fichier, la date du dernier accès est modifiée. Dans un système de fichiers dans lequel existent de nombreux fichiers auxquels on accède souvent (c&#039;est le cas pour les serveurs de &#039;&#039;news&#039;&#039;), ces modifications peuvent ralentir le système. &lt;br /&gt;
:Donner à un fichier l&#039;attribut &#039;&#039;no atime updates&#039;&#039; permet d&#039;éviter ce problème. Noter que la même option existe lorsque l&#039;on monte une partition dans l&#039;arborescence globale (&amp;lt;code&amp;gt;mount -o noatime&amp;lt;/code&amp;gt;), option que l&#039;on peut inscrire dans [[fstab|/etc/fstab]].&lt;br /&gt;
;synchronous directory updates (D)&lt;br /&gt;
;synchronous updates (S)&lt;br /&gt;
;top of directory hierarchy (T), « répertoire racine » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Cet attribut indique au répartiteur de blocs Orlov (ou &#039;&#039;[http://lwn.net/Articles/14633/ Orlov block allocator]&#039;&#039;, utilisé par le noyau Linux pour les systèmes de fichiers &#039;&#039;ext2&#039;&#039; et &#039;&#039;ext3&#039;&#039; depuis la version 2.5.46) que le répertoire concerné doit être considéré comme un répertoire racine de la hiérarchie des répertoires. &lt;br /&gt;
:L&#039;allocateur de blocs est un processus propre au système de fichier permettant de répartir les blocs de données des fichiers dans l&#039;espace disponible tout en garantissant une qu&#039;il ne se produira pas une trop grande fragmentation. Pour cela, on place généralement dans un même groupe de cylindres du disque dur les blocs de fichiers dépendant d&#039;un  même répertoire. Dans le cas contraire, les données risquent d&#039;être éparpillées, voire fragmentées (les blocs d&#039;un même fichier sont alors répartis sur plusieurs cylindres non contigus). On ne peut cependant prévoir à l&#039;avance de quel espace aura besoin un répertoire racine. Il pourrait ne contenir que peu de fichiers ou, au contraire, une arborescence complète et chargée. Le répartiteur Orlov prend donc soin d&#039;éloigner le plus possible les uns des autres les répertoires racines, pour qu&#039;ils disposent d&#039;un espace suffisant où croître.&lt;br /&gt;
:Ajouter cet attribut à un répertoire permet au répartiteur de le traiter comme un répertoire racine, même s&#039;il n&#039;en est pas un, et de le placer  loin des autres répertoires racines. Il est donc utile avec des sous-arborescences de fichiers complexes et lourdes qui risqueraient d&#039;être fragmentées.&lt;br /&gt;
&lt;br /&gt;
==Commandes==&lt;br /&gt;
ll existe deux commandes pour accéder aux attributs étendus : &#039;&#039;lsattr&#039;&#039; (&#039;&#039;list attributes&#039;&#039;, « lister les attributs ») &#039;&#039;chattr&#039;&#039; (&#039;&#039;change attributes&#039;&#039;, « changer les attributs »). Toutes deux sont incluses dans le paquetage &#039;&#039;e2fsprogs&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===chattr===&lt;br /&gt;
Cette commande s&#039;utilise quasiment comme un &#039;&#039;chmod&#039;&#039; simplifié : en effet, les attributs ne peuvent être indiqués que sous forme symbolique (dont les codes sont donnés ci-dessus) et non au moyen d&#039;un éventuel nombre octal.&lt;br /&gt;
&lt;br /&gt;
Ainsi, pour donner un attibut, on utilise la commande suivie de + et du code ; par exemple, rendre un fichier « immuable » se fait avec la commande (en root) :&lt;br /&gt;
&amp;lt;code&amp;gt;chattr +i fichier&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Retirer un attribut requiert l&#039;opérateur &amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt;. La commande pour enlever l&#039;attribut « immuable » est donc : &lt;br /&gt;
&amp;lt;code&amp;gt;chattr -i fichier&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enfin, pour faire en sorte qu&#039;un fichier n&#039;ait que l&#039;attribut « immuable » :&lt;br /&gt;
&amp;lt;code&amp;gt;chattr =i fichier&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La commande peut être utilisée de manière récursive au moyen de l&#039;option &amp;lt;code&amp;gt;-R&amp;lt;/code&amp;gt; : pour rendre toute une hiérarchie immuable, il suffit de : &lt;br /&gt;
&amp;lt;code&amp;gt;chattr -R + i répertoire/&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===lsattr===&lt;br /&gt;
Cette commande fonctionne comme &#039;&#039;ls&#039;&#039; et prend les options &amp;lt;code&amp;gt;-R&amp;lt;/code&amp;gt; (listage récursif), &amp;lt;code&amp;gt;-a&amp;lt;/code&amp;gt; (tout afficher) et &amp;lt;code&amp;gt;-d&amp;lt;/code&amp;gt; (lister les répertoires comme des fichiers), entre autres ; &#039;&#039;lsattr&#039;&#039; peut afficher des attributs qu&#039;on ne peut modifier avec &#039;&#039;chattr&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
L&#039;affichage est simple : chaque attribut du fichier est représenté par son code, une absence d&#039;attribut l&#039;étant par un &amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ainsi : &lt;br /&gt;
&amp;lt;code&amp;gt;chattr +ASacDdijsTtu fichier&lt;br /&gt;
lsattr fichier&lt;br /&gt;
    suS-iadAc----j-tT fichier&amp;lt;/code&amp;gt;&lt;br /&gt;
L&#039;attribut &amp;lt;code&amp;gt;D&amp;lt;/code&amp;gt; n&#039;a pas été appliqué, puisque le fichier n&#039;est pas un répertoire. &lt;br /&gt;
&lt;br /&gt;
Les autres valeurs que peut indiquer &#039;&#039;lsattr&#039;&#039; s&#039;intercalent dans les espaces vacants : &#039;&#039;E&#039;&#039;, &#039;&#039;I&#039;&#039;, &#039;&#039;X&#039;&#039; et &#039;&#039;Z&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
{{Copy|28.10.05|Vincent Ramos|FDL}}&lt;/div&gt;</summary>
		<author><name>Vincent Ramos</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Attributs_%C3%A9tendus&amp;diff=10155</id>
		<title>Attributs étendus</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Attributs_%C3%A9tendus&amp;diff=10155"/>
		<updated>2005-10-27T22:50:55Z</updated>

		<summary type="html">&lt;p&gt;Vincent Ramos : /* lsattr */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Les [[système de fichiers|systèmes de fichiers]] &#039;&#039;ext2&#039;&#039; et &#039;&#039;ext3&#039;&#039; (ainsi que &#039;&#039;reiserfs&#039;&#039; dans certaines conditions) offrent la possibilité de donner à des fichiers (fichiers réels ou répertoires) des &#039;&#039;&#039;attributs étendus&#039;&#039;&#039; qui s&#039;ajoutent aux [[permissions|permissions classiques POSIX.1]], éventuellement complétées par les [[ACL|permissions étendues ACL]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cadre type=&amp;quot;alert&amp;quot;&amp;gt;Seuls ces systèmes de fichiers offrant ces attributs, il n&#039;est pas prudent ─ en terme de sécurité ─ de s&#039;appuyer lourdement sur leur présence si l&#039;on est amené à transférer fréquemment des données d&#039;un système de fichiers &#039;&#039;ext&#039;&#039; à un autre. D&#039;autre part, il convient de tester ces possibilités : toutes les versions du noyau n&#039;en tiennent pas compte de la même manière.&amp;lt;/cadre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Mise en place==&lt;br /&gt;
Il n&#039;y a rien à faire pour des partitions en &#039;&#039;ext2&#039;&#039; ou &#039;&#039;ext3&#039;&#039;, qui respectent nativement les attributs étendus.&lt;br /&gt;
&lt;br /&gt;
Chose assez peu connue, cependant, le système de fichiers &#039;&#039;reiserfs&#039;&#039; peut respecter les attributs étendus, à condition d&#039;[[fstab|être monté]] avec l&#039;option idoine &amp;lt;code&amp;gt;attrs&amp;lt;/code&amp;gt;. Pour ce faire, les commandes suivantes sont appliquées : &lt;br /&gt;
* sur une partition non encore montée : &amp;lt;code&amp;gt;mount -t reiserfs -o attrs /dev/partition /point/de/montage&amp;lt;/code&amp;gt; ; &lt;br /&gt;
* sur une partition déjà montée : &amp;lt;code&amp;gt;mount -o attrs /point/de/montage&amp;lt;/code&amp;gt; (remontage à la volée).&lt;br /&gt;
&lt;br /&gt;
Pour que la prise en compte soit effective à chaque montage automatique (le cas échéant), il faut ajouter l&#039;option dans &#039;&#039;[[fstab|/etc/fstab]]&#039;&#039;. Par exemple : &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
/dev/hda1       /               reiserfs    defaults,acl,attrs 0       1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enfin, on peut recompiler son noyau avec l&#039;option &amp;lt;code&amp;gt;CONFIG_REISERFS_FS_XATTR = y&amp;lt;/code&amp;gt; pour que le mode &amp;lt;code&amp;gt;attr&amp;lt;/code&amp;gt; soit automatiquement appliqué lors du montage d&#039;une partition en &#039;&#039;reiserfs&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cadre type=&amp;quot;note&amp;quot;&amp;gt;Noter que des fichiers d&#039;une partition en &#039;&#039;reiserfs&#039;&#039; montée sans l&#039;option &amp;lt;code&amp;gt;attrs&amp;lt;/code&amp;gt; (ou la recompilation du noyau) peuvent recevoir des attributs étendus : ils seront bien enregistrés mais n&#039;auront aucun effet. La commande de modification d&#039;attributs, &#039;&#039;chattr&#039;&#039;, ne renverra donc aucun message d&#039;erreur sans pour autant que les attributs soient pris en compte. Ce détail peut avoir des répercussion pour la sécurité du système : on peut, à tort, croire protéger des fichiers.&amp;lt;/cadre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Types d&#039;attributs==&lt;br /&gt;
Selon la norme POSIX.1, tout fichier possède les permissions en lecture, écriture et exécution. On peut leur adjoindre des attributs supplémentaires, qui s&#039;imposent à tous les utilisateurs (dont root, qui peut cependant annuler ces attributs) quand ils modifient les actions qu&#039;on peut avoir sur eux. Certains attributs sont encore expérimentaux (octobre 2005) et nécessitent de patcher le noyau pour qu&#039;ils aient un effet réel. &lt;br /&gt;
;append only (a), « ajouter seulement » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Protège le fichier contre la suppression de contenu : on ne peut que lui en ajouter. &lt;br /&gt;
;compressed (c), « compressé » ─ &#039;&#039;expérimental&#039;&#039;&lt;br /&gt;
:Le fichier est automatiquement compressé ─ si c&#039;est utile, et avec un format de compression le plus efficace ─ quand il est stocké. La décompression lors de la lecture et la compression des données ajoutées au fichier par la suite se font à la volée, de manière transparente pour l&#039;utilisateur (la commande &amp;lt;code&amp;gt;ls -l&amp;lt;/code&amp;gt;, par exemple, montre la taille décompressée). &lt;br /&gt;
:Cet attribut appliqué à un répertoire ne le compresse pas mais fait se compresser automatiquement tout nouveau fichier qu&#039;on y crée.&lt;br /&gt;
;no dump (d), « pas de sauvegarde »&lt;br /&gt;
:Un fichier ainsi marqué sera ignoré par la commande de sauvegarde &#039;&#039;dump&#039;&#039; (qui ne fonctionne que pour &#039;&#039;ext2&#039;&#039; et &#039;&#039;ext3&#039;&#039;). Cet attribut est utile pour empêcher la sauvegarde par &#039;&#039;dump&#039;&#039; d&#039;un fichier ou répertoire situés dans un système de fichiers monté avec l&#039;option &amp;lt;code&amp;gt;dump&amp;lt;/code&amp;gt; positionnée à &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; (cf &#039;&#039;[[fstab]]&#039;&#039;).&lt;br /&gt;
;immutable (i), « immuable » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Protège le fichier contre toute modification (suppression, modification, déplacement, changements de permissions), même par root, et empêche qu&#039;on crée un lien vers lui. Seule la modification des attributs étendus est permise à son propriétaire et seul root peut enlever l&#039;attribut « immuable » d&#039;un fichier.&lt;br /&gt;
:Cet attribut est sans doute l&#039;un des plus intéressants.&lt;br /&gt;
;data journalling (j), « journalisation des données » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Cet attribut n&#039;est utile qu&#039;avec une partition en &#039;&#039;ext3&#039;&#039; montée avec les options de journalisation des données &amp;lt;code&amp;gt;data=ordered&amp;lt;/code&amp;gt; (montage par défaut) ou &amp;lt;code&amp;gt;data=writeback&amp;lt;/code&amp;gt; pour simuler une journalisation du type &amp;lt;code&amp;gt;data=journal&amp;lt;/code&amp;gt;, où les données sont écrites dans le journal avant de l&#039;être dans le fichier lui-même. Consulter &amp;lt;code&amp;gt;man mount 8&amp;lt;/code&amp;gt; pour plus de détails sur les mécanismes de journalisation d&#039;&#039;&#039;ext3&#039;&#039;. &lt;br /&gt;
:Sur une partition &#039;&#039;ext3&#039;&#039; en mode &amp;lt;code&amp;gt;data=journal&amp;lt;/code&amp;gt;, cet attribut est ignoré, de même que sur les partitions en &#039;&#039;ext2&#039;&#039; et &#039;&#039;reiserfs&#039;&#039;, le premier type n&#039;étant pas journalisé, le second l&#039;étant d&#039;une manière incompatible.&lt;br /&gt;
;secure deletion (s), « effacement sécurisé »  ─ &#039;&#039;expérimental&#039;&#039;&lt;br /&gt;
:Un fichier portant cet attribut est non seulement « effacé » mais en plus les blocs qu&#039;il occupait dans le système de fichiers sont recouverts de zéros pour éviter qu&#039;on puisse récupérer les données malgré l&#039;effacement. &lt;br /&gt;
:Normalement, effacer un fichier consiste seulement à détruire toute référence vers l&#039;espace occupé par les données de ce fichier dans la partition. Il n&#039;est cependant pas question de détruire physiquement les données elles-mêmes, sauf si le fichier possède cet attribut, auquel cas non seulement il n&#039;est plus accessible mais en plus tous ses bits sont réécrits.&lt;br /&gt;
;no tail-merging (t)&lt;br /&gt;
&lt;br /&gt;
;undeletable (u), « ineffaçable » ─ &#039;&#039;&#039;expérimental&#039;&#039;&#039;&lt;br /&gt;
:Lors d&#039;un effacement, les références vers l&#039;espace du système de fichiers qui contient les données sont détruites, mais pas les données. Sans ces références, cependant, l&#039;espace anciennement réservé peut être utilisé par des fichiers nouvellement créés ou ayant été augmentés. Dans ce cas, il n&#039;est plus possible de récupérer les données en question. &lt;br /&gt;
:L&#039;attribut « ineffaçable » permet de préserver les blocs qui contenaient les données de façon à ce qu&#039;on puisse les récupérer si besoin est. L&#039;espace-disque n&#039;est donc pas libéré.&lt;br /&gt;
;no atime updates (A)&lt;br /&gt;
;synchronous directory updates (D)&lt;br /&gt;
;synchronous updates (S)&lt;br /&gt;
;top of directory hierarchy (T), « répertoire racine » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Cet attribut indique au répartiteur de blocs Orlov (ou &#039;&#039;[http://lwn.net/Articles/14633/ Orlov block allocator]&#039;&#039;, utilisé par le noyau Linux pour les systèmes de fichiers &#039;&#039;ext2&#039;&#039; et &#039;&#039;ext3&#039;&#039; depuis la version 2.5.46) que le répertoire concerné doit être considéré comme un répertoire racine de la hiérarchie des répertoires. &lt;br /&gt;
:L&#039;allocateur de blocs est un processus propre au système de fichier permettant de répartir les blocs de données des fichiers dans l&#039;espace disponible tout en garantissant une qu&#039;il ne se produira pas une trop grande fragmentation. Pour cela, on place généralement dans un même groupe de cylindres du disque dur les blocs de fichiers dépendant d&#039;un  même répertoire. Dans le cas contraire, les données risquent d&#039;être éparpillées, voire fragmentées (les blocs d&#039;un même fichier sont alors répartis sur plusieurs cylindres non contigus). On ne peut cependant prévoir à l&#039;avance de quel espace aura besoin un répertoire racine. Il pourrait ne contenir que peu de fichiers ou, au contraire, une arborescence complète et chargée. Le répartiteur Orlov prend donc soin d&#039;éloigner le plus possible les uns des autres les répertoires racines, pour qu&#039;ils disposent d&#039;un espace suffisant où croître.&lt;br /&gt;
:Ajouter cet attribut à un répertoire permet au répartiteur de le traiter comme un répertoire racine, même s&#039;il n&#039;en est pas un, et de le placer  loin des autres répertoires racines. Il est donc utile avec des sous-arborescences de fichiers complexes et lourdes qui risqueraient d&#039;être fragmentées.&lt;br /&gt;
&lt;br /&gt;
==Commandes==&lt;br /&gt;
ll existe deux commandes pour accéder aux attributs étendus : &#039;&#039;lsattr&#039;&#039; (&#039;&#039;list attributes&#039;&#039;, « lister les attributs ») &#039;&#039;chattr&#039;&#039; (&#039;&#039;change attributes&#039;&#039;, « changer les attributs »). Toutes deux sont incluses dans le paquetage &#039;&#039;e2fsprogs&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===chattr===&lt;br /&gt;
Cette commande s&#039;utilise quasiment comme un &#039;&#039;chmod&#039;&#039; simplifié : en effet, les attributs ne peuvent être indiqués que sous forme symbolique (dont les codes sont donnés ci-dessus) et non au moyen d&#039;un éventuel nombre octal.&lt;br /&gt;
&lt;br /&gt;
Ainsi, pour donner un attibut, on utilise la commande suivie de + et du code ; par exemple, rendre un fichier « immuable » se fait avec la commande (en root) :&lt;br /&gt;
&amp;lt;code&amp;gt;chattr +i fichier&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Retirer un attribut requiert l&#039;opérateur &amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt;. La commande pour enlever l&#039;attribut « immuable » est donc : &lt;br /&gt;
&amp;lt;code&amp;gt;chattr -i fichier&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enfin, pour faire en sorte qu&#039;un fichier n&#039;ait que l&#039;attribut « immuable » :&lt;br /&gt;
&amp;lt;code&amp;gt;chattr =i fichier&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La commande peut être utilisée de manière récursive au moyen de l&#039;option &amp;lt;code&amp;gt;-R&amp;lt;/code&amp;gt; : pour rendre toute une hiérarchie immuable, il suffit de : &lt;br /&gt;
&amp;lt;code&amp;gt;chattr -R + i répertoire/&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===lsattr===&lt;br /&gt;
Cette commande fonctionne comme &#039;&#039;ls&#039;&#039; et prend les options &amp;lt;code&amp;gt;-R&amp;lt;/code&amp;gt; (listage récursif), &amp;lt;code&amp;gt;-a&amp;lt;/code&amp;gt; (tout afficher) et &amp;lt;code&amp;gt;-d&amp;lt;/code&amp;gt; (lister les répertoires comme des fichiers), entre autres ; &#039;&#039;lsattr&#039;&#039; peut afficher des attributs qu&#039;on ne peut modifier avec &#039;&#039;chattr&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
L&#039;affichage est simple : chaque attribut du fichier est représenté par son code, une absence d&#039;attribut l&#039;étant par un &amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ainsi : &lt;br /&gt;
&amp;lt;code&amp;gt;chattr +ASacDdijsTtu fichier&lt;br /&gt;
lsattr fichier&lt;br /&gt;
    suS-iadAc----j-tT fichier&amp;lt;/code&amp;gt;&lt;br /&gt;
L&#039;attribut &amp;lt;code&amp;gt;D&amp;lt;/code&amp;gt; n&#039;a pas été appliqué, puisque le fichier n&#039;est pas un répertoire. &lt;br /&gt;
&lt;br /&gt;
Les autres valeurs que peut indiquer &#039;&#039;lsattr&#039;&#039; s&#039;intercalent dans les espaces vacants : &#039;&#039;E&#039;&#039;, &#039;&#039;I&#039;&#039;, &#039;&#039;X&#039;&#039; et &#039;&#039;Z&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
{{Copy|28.10.05|Vincent Ramos|FDL}}&lt;/div&gt;</summary>
		<author><name>Vincent Ramos</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Attributs_%C3%A9tendus&amp;diff=10154</id>
		<title>Attributs étendus</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Attributs_%C3%A9tendus&amp;diff=10154"/>
		<updated>2005-10-27T22:20:04Z</updated>

		<summary type="html">&lt;p&gt;Vincent Ramos : /* Commandes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Les [[système de fichiers|systèmes de fichiers]] &#039;&#039;ext2&#039;&#039; et &#039;&#039;ext3&#039;&#039; (ainsi que &#039;&#039;reiserfs&#039;&#039; dans certaines conditions) offrent la possibilité de donner à des fichiers (fichiers réels ou répertoires) des &#039;&#039;&#039;attributs étendus&#039;&#039;&#039; qui s&#039;ajoutent aux [[permissions|permissions classiques POSIX.1]], éventuellement complétées par les [[ACL|permissions étendues ACL]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cadre type=&amp;quot;alert&amp;quot;&amp;gt;Seuls ces systèmes de fichiers offrant ces attributs, il n&#039;est pas prudent ─ en terme de sécurité ─ de s&#039;appuyer lourdement sur leur présence si l&#039;on est amené à transférer fréquemment des données d&#039;un système de fichiers &#039;&#039;ext&#039;&#039; à un autre. D&#039;autre part, il convient de tester ces possibilités : toutes les versions du noyau n&#039;en tiennent pas compte de la même manière.&amp;lt;/cadre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Mise en place==&lt;br /&gt;
Il n&#039;y a rien à faire pour des partitions en &#039;&#039;ext2&#039;&#039; ou &#039;&#039;ext3&#039;&#039;, qui respectent nativement les attributs étendus.&lt;br /&gt;
&lt;br /&gt;
Chose assez peu connue, cependant, le système de fichiers &#039;&#039;reiserfs&#039;&#039; peut respecter les attributs étendus, à condition d&#039;[[fstab|être monté]] avec l&#039;option idoine &amp;lt;code&amp;gt;attrs&amp;lt;/code&amp;gt;. Pour ce faire, les commandes suivantes sont appliquées : &lt;br /&gt;
* sur une partition non encore montée : &amp;lt;code&amp;gt;mount -t reiserfs -o attrs /dev/partition /point/de/montage&amp;lt;/code&amp;gt; ; &lt;br /&gt;
* sur une partition déjà montée : &amp;lt;code&amp;gt;mount -o attrs /point/de/montage&amp;lt;/code&amp;gt; (remontage à la volée).&lt;br /&gt;
&lt;br /&gt;
Pour que la prise en compte soit effective à chaque montage automatique (le cas échéant), il faut ajouter l&#039;option dans &#039;&#039;[[fstab|/etc/fstab]]&#039;&#039;. Par exemple : &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
/dev/hda1       /               reiserfs    defaults,acl,attrs 0       1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enfin, on peut recompiler son noyau avec l&#039;option &amp;lt;code&amp;gt;CONFIG_REISERFS_FS_XATTR = y&amp;lt;/code&amp;gt; pour que le mode &amp;lt;code&amp;gt;attr&amp;lt;/code&amp;gt; soit automatiquement appliqué lors du montage d&#039;une partition en &#039;&#039;reiserfs&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cadre type=&amp;quot;note&amp;quot;&amp;gt;Noter que des fichiers d&#039;une partition en &#039;&#039;reiserfs&#039;&#039; montée sans l&#039;option &amp;lt;code&amp;gt;attrs&amp;lt;/code&amp;gt; (ou la recompilation du noyau) peuvent recevoir des attributs étendus : ils seront bien enregistrés mais n&#039;auront aucun effet. La commande de modification d&#039;attributs, &#039;&#039;chattr&#039;&#039;, ne renverra donc aucun message d&#039;erreur sans pour autant que les attributs soient pris en compte. Ce détail peut avoir des répercussion pour la sécurité du système : on peut, à tort, croire protéger des fichiers.&amp;lt;/cadre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Types d&#039;attributs==&lt;br /&gt;
Selon la norme POSIX.1, tout fichier possède les permissions en lecture, écriture et exécution. On peut leur adjoindre des attributs supplémentaires, qui s&#039;imposent à tous les utilisateurs (dont root, qui peut cependant annuler ces attributs) quand ils modifient les actions qu&#039;on peut avoir sur eux. Certains attributs sont encore expérimentaux (octobre 2005) et nécessitent de patcher le noyau pour qu&#039;ils aient un effet réel. &lt;br /&gt;
;append only (a), « ajouter seulement » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Protège le fichier contre la suppression de contenu : on ne peut que lui en ajouter. &lt;br /&gt;
;compressed (c), « compressé » ─ &#039;&#039;expérimental&#039;&#039;&lt;br /&gt;
:Le fichier est automatiquement compressé ─ si c&#039;est utile, et avec un format de compression le plus efficace ─ quand il est stocké. La décompression lors de la lecture et la compression des données ajoutées au fichier par la suite se font à la volée, de manière transparente pour l&#039;utilisateur (la commande &amp;lt;code&amp;gt;ls -l&amp;lt;/code&amp;gt;, par exemple, montre la taille décompressée). &lt;br /&gt;
:Cet attribut appliqué à un répertoire ne le compresse pas mais fait se compresser automatiquement tout nouveau fichier qu&#039;on y crée.&lt;br /&gt;
;no dump (d), « pas de sauvegarde »&lt;br /&gt;
:Un fichier ainsi marqué sera ignoré par la commande de sauvegarde &#039;&#039;dump&#039;&#039; (qui ne fonctionne que pour &#039;&#039;ext2&#039;&#039; et &#039;&#039;ext3&#039;&#039;). Cet attribut est utile pour empêcher la sauvegarde par &#039;&#039;dump&#039;&#039; d&#039;un fichier ou répertoire situés dans un système de fichiers monté avec l&#039;option &amp;lt;code&amp;gt;dump&amp;lt;/code&amp;gt; positionnée à &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; (cf &#039;&#039;[[fstab]]&#039;&#039;).&lt;br /&gt;
;immutable (i), « immuable » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Protège le fichier contre toute modification (suppression, modification, déplacement, changements de permissions), même par root, et empêche qu&#039;on crée un lien vers lui. Seule la modification des attributs étendus est permise à son propriétaire et seul root peut enlever l&#039;attribut « immuable » d&#039;un fichier.&lt;br /&gt;
:Cet attribut est sans doute l&#039;un des plus intéressants.&lt;br /&gt;
;data journalling (j), « journalisation des données » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Cet attribut n&#039;est utile qu&#039;avec une partition en &#039;&#039;ext3&#039;&#039; montée avec les options de journalisation des données &amp;lt;code&amp;gt;data=ordered&amp;lt;/code&amp;gt; (montage par défaut) ou &amp;lt;code&amp;gt;data=writeback&amp;lt;/code&amp;gt; pour simuler une journalisation du type &amp;lt;code&amp;gt;data=journal&amp;lt;/code&amp;gt;, où les données sont écrites dans le journal avant de l&#039;être dans le fichier lui-même. Consulter &amp;lt;code&amp;gt;man mount 8&amp;lt;/code&amp;gt; pour plus de détails sur les mécanismes de journalisation d&#039;&#039;&#039;ext3&#039;&#039;. &lt;br /&gt;
:Sur une partition &#039;&#039;ext3&#039;&#039; en mode &amp;lt;code&amp;gt;data=journal&amp;lt;/code&amp;gt;, cet attribut est ignoré, de même que sur les partitions en &#039;&#039;ext2&#039;&#039; et &#039;&#039;reiserfs&#039;&#039;, le premier type n&#039;étant pas journalisé, le second l&#039;étant d&#039;une manière incompatible.&lt;br /&gt;
;secure deletion (s), « effacement sécurisé »  ─ &#039;&#039;expérimental&#039;&#039;&lt;br /&gt;
:Un fichier portant cet attribut est non seulement « effacé » mais en plus les blocs qu&#039;il occupait dans le système de fichiers sont recouverts de zéros pour éviter qu&#039;on puisse récupérer les données malgré l&#039;effacement. &lt;br /&gt;
:Normalement, effacer un fichier consiste seulement à détruire toute référence vers l&#039;espace occupé par les données de ce fichier dans la partition. Il n&#039;est cependant pas question de détruire physiquement les données elles-mêmes, sauf si le fichier possède cet attribut, auquel cas non seulement il n&#039;est plus accessible mais en plus tous ses bits sont réécrits.&lt;br /&gt;
;no tail-merging (t)&lt;br /&gt;
&lt;br /&gt;
;undeletable (u), « ineffaçable » ─ &#039;&#039;&#039;expérimental&#039;&#039;&#039;&lt;br /&gt;
:Lors d&#039;un effacement, les références vers l&#039;espace du système de fichiers qui contient les données sont détruites, mais pas les données. Sans ces références, cependant, l&#039;espace anciennement réservé peut être utilisé par des fichiers nouvellement créés ou ayant été augmentés. Dans ce cas, il n&#039;est plus possible de récupérer les données en question. &lt;br /&gt;
:L&#039;attribut « ineffaçable » permet de préserver les blocs qui contenaient les données de façon à ce qu&#039;on puisse les récupérer si besoin est. L&#039;espace-disque n&#039;est donc pas libéré.&lt;br /&gt;
;no atime updates (A)&lt;br /&gt;
;synchronous directory updates (D)&lt;br /&gt;
;synchronous updates (S)&lt;br /&gt;
;top of directory hierarchy (T), « répertoire racine » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Cet attribut indique au répartiteur de blocs Orlov (ou &#039;&#039;[http://lwn.net/Articles/14633/ Orlov block allocator]&#039;&#039;, utilisé par le noyau Linux pour les systèmes de fichiers &#039;&#039;ext2&#039;&#039; et &#039;&#039;ext3&#039;&#039; depuis la version 2.5.46) que le répertoire concerné doit être considéré comme un répertoire racine de la hiérarchie des répertoires. &lt;br /&gt;
:L&#039;allocateur de blocs est un processus propre au système de fichier permettant de répartir les blocs de données des fichiers dans l&#039;espace disponible tout en garantissant une qu&#039;il ne se produira pas une trop grande fragmentation. Pour cela, on place généralement dans un même groupe de cylindres du disque dur les blocs de fichiers dépendant d&#039;un  même répertoire. Dans le cas contraire, les données risquent d&#039;être éparpillées, voire fragmentées (les blocs d&#039;un même fichier sont alors répartis sur plusieurs cylindres non contigus). On ne peut cependant prévoir à l&#039;avance de quel espace aura besoin un répertoire racine. Il pourrait ne contenir que peu de fichiers ou, au contraire, une arborescence complète et chargée. Le répartiteur Orlov prend donc soin d&#039;éloigner le plus possible les uns des autres les répertoires racines, pour qu&#039;ils disposent d&#039;un espace suffisant où croître.&lt;br /&gt;
:Ajouter cet attribut à un répertoire permet au répartiteur de le traiter comme un répertoire racine, même s&#039;il n&#039;en est pas un, et de le placer  loin des autres répertoires racines. Il est donc utile avec des sous-arborescences de fichiers complexes et lourdes qui risqueraient d&#039;être fragmentées.&lt;br /&gt;
&lt;br /&gt;
==Commandes==&lt;br /&gt;
ll existe deux commandes pour accéder aux attributs étendus : &#039;&#039;lsattr&#039;&#039; (&#039;&#039;list attributes&#039;&#039;, « lister les attributs ») &#039;&#039;chattr&#039;&#039; (&#039;&#039;change attributes&#039;&#039;, « changer les attributs »). Toutes deux sont incluses dans le paquetage &#039;&#039;e2fsprogs&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===chattr===&lt;br /&gt;
Cette commande s&#039;utilise quasiment comme un &#039;&#039;chmod&#039;&#039; simplifié : en effet, les attributs ne peuvent être indiqués que sous forme symbolique (dont les codes sont donnés ci-dessus) et non au moyen d&#039;un éventuel nombre octal.&lt;br /&gt;
&lt;br /&gt;
Ainsi, pour donner un attibut, on utilise la commande suivie de + et du code ; par exemple, rendre un fichier « immuable » se fait avec la commande (en root) :&lt;br /&gt;
&amp;lt;code&amp;gt;chattr +i fichier&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Retirer un attribut requiert l&#039;opérateur &amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt;. La commande pour enlever l&#039;attribut « immuable » est donc : &lt;br /&gt;
&amp;lt;code&amp;gt;chattr -i fichier&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enfin, pour faire en sorte qu&#039;un fichier n&#039;ait que l&#039;attribut « immuable » :&lt;br /&gt;
&amp;lt;code&amp;gt;chattr =i fichier&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La commande peut être utilisée de manière récursive au moyen de l&#039;option &amp;lt;code&amp;gt;-R&amp;lt;/code&amp;gt; : pour rendre toute une hiérarchie immuable, il suffit de : &lt;br /&gt;
&amp;lt;code&amp;gt;chattr -R + i répertoire/&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===lsattr===&lt;br /&gt;
&lt;br /&gt;
{{Copy|28.10.05|Vincent Ramos|FDL}}&lt;/div&gt;</summary>
		<author><name>Vincent Ramos</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Attributs_%C3%A9tendus&amp;diff=10153</id>
		<title>Attributs étendus</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Attributs_%C3%A9tendus&amp;diff=10153"/>
		<updated>2005-10-27T22:09:40Z</updated>

		<summary type="html">&lt;p&gt;Vincent Ramos : /* Commande */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Les [[système de fichiers|systèmes de fichiers]] &#039;&#039;ext2&#039;&#039; et &#039;&#039;ext3&#039;&#039; (ainsi que &#039;&#039;reiserfs&#039;&#039; dans certaines conditions) offrent la possibilité de donner à des fichiers (fichiers réels ou répertoires) des &#039;&#039;&#039;attributs étendus&#039;&#039;&#039; qui s&#039;ajoutent aux [[permissions|permissions classiques POSIX.1]], éventuellement complétées par les [[ACL|permissions étendues ACL]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cadre type=&amp;quot;alert&amp;quot;&amp;gt;Seuls ces systèmes de fichiers offrant ces attributs, il n&#039;est pas prudent ─ en terme de sécurité ─ de s&#039;appuyer lourdement sur leur présence si l&#039;on est amené à transférer fréquemment des données d&#039;un système de fichiers &#039;&#039;ext&#039;&#039; à un autre. D&#039;autre part, il convient de tester ces possibilités : toutes les versions du noyau n&#039;en tiennent pas compte de la même manière.&amp;lt;/cadre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Mise en place==&lt;br /&gt;
Il n&#039;y a rien à faire pour des partitions en &#039;&#039;ext2&#039;&#039; ou &#039;&#039;ext3&#039;&#039;, qui respectent nativement les attributs étendus.&lt;br /&gt;
&lt;br /&gt;
Chose assez peu connue, cependant, le système de fichiers &#039;&#039;reiserfs&#039;&#039; peut respecter les attributs étendus, à condition d&#039;[[fstab|être monté]] avec l&#039;option idoine &amp;lt;code&amp;gt;attrs&amp;lt;/code&amp;gt;. Pour ce faire, les commandes suivantes sont appliquées : &lt;br /&gt;
* sur une partition non encore montée : &amp;lt;code&amp;gt;mount -t reiserfs -o attrs /dev/partition /point/de/montage&amp;lt;/code&amp;gt; ; &lt;br /&gt;
* sur une partition déjà montée : &amp;lt;code&amp;gt;mount -o attrs /point/de/montage&amp;lt;/code&amp;gt; (remontage à la volée).&lt;br /&gt;
&lt;br /&gt;
Pour que la prise en compte soit effective à chaque montage automatique (le cas échéant), il faut ajouter l&#039;option dans &#039;&#039;[[fstab|/etc/fstab]]&#039;&#039;. Par exemple : &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
/dev/hda1       /               reiserfs    defaults,acl,attrs 0       1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enfin, on peut recompiler son noyau avec l&#039;option &amp;lt;code&amp;gt;CONFIG_REISERFS_FS_XATTR = y&amp;lt;/code&amp;gt; pour que le mode &amp;lt;code&amp;gt;attr&amp;lt;/code&amp;gt; soit automatiquement appliqué lors du montage d&#039;une partition en &#039;&#039;reiserfs&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cadre type=&amp;quot;note&amp;quot;&amp;gt;Noter que des fichiers d&#039;une partition en &#039;&#039;reiserfs&#039;&#039; montée sans l&#039;option &amp;lt;code&amp;gt;attrs&amp;lt;/code&amp;gt; (ou la recompilation du noyau) peuvent recevoir des attributs étendus : ils seront bien enregistrés mais n&#039;auront aucun effet. La commande de modification d&#039;attributs, &#039;&#039;chattr&#039;&#039;, ne renverra donc aucun message d&#039;erreur sans pour autant que les attributs soient pris en compte. Ce détail peut avoir des répercussion pour la sécurité du système : on peut, à tort, croire protéger des fichiers.&amp;lt;/cadre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Types d&#039;attributs==&lt;br /&gt;
Selon la norme POSIX.1, tout fichier possède les permissions en lecture, écriture et exécution. On peut leur adjoindre des attributs supplémentaires, qui s&#039;imposent à tous les utilisateurs (dont root, qui peut cependant annuler ces attributs) quand ils modifient les actions qu&#039;on peut avoir sur eux. Certains attributs sont encore expérimentaux (octobre 2005) et nécessitent de patcher le noyau pour qu&#039;ils aient un effet réel. &lt;br /&gt;
;append only (a), « ajouter seulement » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Protège le fichier contre la suppression de contenu : on ne peut que lui en ajouter. &lt;br /&gt;
;compressed (c), « compressé » ─ &#039;&#039;expérimental&#039;&#039;&lt;br /&gt;
:Le fichier est automatiquement compressé ─ si c&#039;est utile, et avec un format de compression le plus efficace ─ quand il est stocké. La décompression lors de la lecture et la compression des données ajoutées au fichier par la suite se font à la volée, de manière transparente pour l&#039;utilisateur (la commande &amp;lt;code&amp;gt;ls -l&amp;lt;/code&amp;gt;, par exemple, montre la taille décompressée). &lt;br /&gt;
:Cet attribut appliqué à un répertoire ne le compresse pas mais fait se compresser automatiquement tout nouveau fichier qu&#039;on y crée.&lt;br /&gt;
;no dump (d), « pas de sauvegarde »&lt;br /&gt;
:Un fichier ainsi marqué sera ignoré par la commande de sauvegarde &#039;&#039;dump&#039;&#039; (qui ne fonctionne que pour &#039;&#039;ext2&#039;&#039; et &#039;&#039;ext3&#039;&#039;). Cet attribut est utile pour empêcher la sauvegarde par &#039;&#039;dump&#039;&#039; d&#039;un fichier ou répertoire situés dans un système de fichiers monté avec l&#039;option &amp;lt;code&amp;gt;dump&amp;lt;/code&amp;gt; positionnée à &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; (cf &#039;&#039;[[fstab]]&#039;&#039;).&lt;br /&gt;
;immutable (i), « immuable » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Protège le fichier contre toute modification (suppression, modification, déplacement, changements de permissions), même par root, et empêche qu&#039;on crée un lien vers lui. Seule la modification des attributs étendus est permise à son propriétaire et seul root peut enlever l&#039;attribut « immuable » d&#039;un fichier.&lt;br /&gt;
:Cet attribut est sans doute l&#039;un des plus intéressants.&lt;br /&gt;
;data journalling (j), « journalisation des données » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Cet attribut n&#039;est utile qu&#039;avec une partition en &#039;&#039;ext3&#039;&#039; montée avec les options de journalisation des données &amp;lt;code&amp;gt;data=ordered&amp;lt;/code&amp;gt; (montage par défaut) ou &amp;lt;code&amp;gt;data=writeback&amp;lt;/code&amp;gt; pour simuler une journalisation du type &amp;lt;code&amp;gt;data=journal&amp;lt;/code&amp;gt;, où les données sont écrites dans le journal avant de l&#039;être dans le fichier lui-même. Consulter &amp;lt;code&amp;gt;man mount 8&amp;lt;/code&amp;gt; pour plus de détails sur les mécanismes de journalisation d&#039;&#039;&#039;ext3&#039;&#039;. &lt;br /&gt;
:Sur une partition &#039;&#039;ext3&#039;&#039; en mode &amp;lt;code&amp;gt;data=journal&amp;lt;/code&amp;gt;, cet attribut est ignoré, de même que sur les partitions en &#039;&#039;ext2&#039;&#039; et &#039;&#039;reiserfs&#039;&#039;, le premier type n&#039;étant pas journalisé, le second l&#039;étant d&#039;une manière incompatible.&lt;br /&gt;
;secure deletion (s), « effacement sécurisé »  ─ &#039;&#039;expérimental&#039;&#039;&lt;br /&gt;
:Un fichier portant cet attribut est non seulement « effacé » mais en plus les blocs qu&#039;il occupait dans le système de fichiers sont recouverts de zéros pour éviter qu&#039;on puisse récupérer les données malgré l&#039;effacement. &lt;br /&gt;
:Normalement, effacer un fichier consiste seulement à détruire toute référence vers l&#039;espace occupé par les données de ce fichier dans la partition. Il n&#039;est cependant pas question de détruire physiquement les données elles-mêmes, sauf si le fichier possède cet attribut, auquel cas non seulement il n&#039;est plus accessible mais en plus tous ses bits sont réécrits.&lt;br /&gt;
;no tail-merging (t)&lt;br /&gt;
&lt;br /&gt;
;undeletable (u), « ineffaçable » ─ &#039;&#039;&#039;expérimental&#039;&#039;&#039;&lt;br /&gt;
:Lors d&#039;un effacement, les références vers l&#039;espace du système de fichiers qui contient les données sont détruites, mais pas les données. Sans ces références, cependant, l&#039;espace anciennement réservé peut être utilisé par des fichiers nouvellement créés ou ayant été augmentés. Dans ce cas, il n&#039;est plus possible de récupérer les données en question. &lt;br /&gt;
:L&#039;attribut « ineffaçable » permet de préserver les blocs qui contenaient les données de façon à ce qu&#039;on puisse les récupérer si besoin est. L&#039;espace-disque n&#039;est donc pas libéré.&lt;br /&gt;
;no atime updates (A)&lt;br /&gt;
;synchronous directory updates (D)&lt;br /&gt;
;synchronous updates (S)&lt;br /&gt;
;top of directory hierarchy (T), « répertoire racine » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Cet attribut indique au répartiteur de blocs Orlov (ou &#039;&#039;[http://lwn.net/Articles/14633/ Orlov block allocator]&#039;&#039;, utilisé par le noyau Linux pour les systèmes de fichiers &#039;&#039;ext2&#039;&#039; et &#039;&#039;ext3&#039;&#039; depuis la version 2.5.46) que le répertoire concerné doit être considéré comme un répertoire racine de la hiérarchie des répertoires. &lt;br /&gt;
:L&#039;allocateur de blocs est un processus propre au système de fichier permettant de répartir les blocs de données des fichiers dans l&#039;espace disponible tout en garantissant une qu&#039;il ne se produira pas une trop grande fragmentation. Pour cela, on place généralement dans un même groupe de cylindres du disque dur les blocs de fichiers dépendant d&#039;un  même répertoire. Dans le cas contraire, les données risquent d&#039;être éparpillées, voire fragmentées (les blocs d&#039;un même fichier sont alors répartis sur plusieurs cylindres non contigus). On ne peut cependant prévoir à l&#039;avance de quel espace aura besoin un répertoire racine. Il pourrait ne contenir que peu de fichiers ou, au contraire, une arborescence complète et chargée. Le répartiteur Orlov prend donc soin d&#039;éloigner le plus possible les uns des autres les répertoires racines, pour qu&#039;ils disposent d&#039;un espace suffisant où croître.&lt;br /&gt;
:Ajouter cet attribut à un répertoire permet au répartiteur de le traiter comme un répertoire racine, même s&#039;il n&#039;en est pas un, et de le placer  loin des autres répertoires racines. Il est donc utile avec des sous-arborescences de fichiers complexes et lourdes qui risqueraient d&#039;être fragmentées.&lt;br /&gt;
&lt;br /&gt;
==Commandes==&lt;br /&gt;
ll existe deux commandes pour accéder aux attributs étendus : &#039;&#039;lsattr&#039;&#039; (&#039;&#039;list attributes&#039;&#039;, « lister les attributs ») &#039;&#039;chattr&#039;&#039; (&#039;&#039;change attributes&#039;&#039;, « changer les attributs »). Toutes deux sont incluses dans le paquetage &#039;&#039;e2fsprogs&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
{{Copy|28.10.05|Vincent Ramos|FDL}}&lt;/div&gt;</summary>
		<author><name>Vincent Ramos</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Attributs_%C3%A9tendus&amp;diff=10152</id>
		<title>Attributs étendus</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Attributs_%C3%A9tendus&amp;diff=10152"/>
		<updated>2005-10-27T22:09:09Z</updated>

		<summary type="html">&lt;p&gt;Vincent Ramos : /* Commande */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Les [[système de fichiers|systèmes de fichiers]] &#039;&#039;ext2&#039;&#039; et &#039;&#039;ext3&#039;&#039; (ainsi que &#039;&#039;reiserfs&#039;&#039; dans certaines conditions) offrent la possibilité de donner à des fichiers (fichiers réels ou répertoires) des &#039;&#039;&#039;attributs étendus&#039;&#039;&#039; qui s&#039;ajoutent aux [[permissions|permissions classiques POSIX.1]], éventuellement complétées par les [[ACL|permissions étendues ACL]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cadre type=&amp;quot;alert&amp;quot;&amp;gt;Seuls ces systèmes de fichiers offrant ces attributs, il n&#039;est pas prudent ─ en terme de sécurité ─ de s&#039;appuyer lourdement sur leur présence si l&#039;on est amené à transférer fréquemment des données d&#039;un système de fichiers &#039;&#039;ext&#039;&#039; à un autre. D&#039;autre part, il convient de tester ces possibilités : toutes les versions du noyau n&#039;en tiennent pas compte de la même manière.&amp;lt;/cadre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Mise en place==&lt;br /&gt;
Il n&#039;y a rien à faire pour des partitions en &#039;&#039;ext2&#039;&#039; ou &#039;&#039;ext3&#039;&#039;, qui respectent nativement les attributs étendus.&lt;br /&gt;
&lt;br /&gt;
Chose assez peu connue, cependant, le système de fichiers &#039;&#039;reiserfs&#039;&#039; peut respecter les attributs étendus, à condition d&#039;[[fstab|être monté]] avec l&#039;option idoine &amp;lt;code&amp;gt;attrs&amp;lt;/code&amp;gt;. Pour ce faire, les commandes suivantes sont appliquées : &lt;br /&gt;
* sur une partition non encore montée : &amp;lt;code&amp;gt;mount -t reiserfs -o attrs /dev/partition /point/de/montage&amp;lt;/code&amp;gt; ; &lt;br /&gt;
* sur une partition déjà montée : &amp;lt;code&amp;gt;mount -o attrs /point/de/montage&amp;lt;/code&amp;gt; (remontage à la volée).&lt;br /&gt;
&lt;br /&gt;
Pour que la prise en compte soit effective à chaque montage automatique (le cas échéant), il faut ajouter l&#039;option dans &#039;&#039;[[fstab|/etc/fstab]]&#039;&#039;. Par exemple : &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
/dev/hda1       /               reiserfs    defaults,acl,attrs 0       1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enfin, on peut recompiler son noyau avec l&#039;option &amp;lt;code&amp;gt;CONFIG_REISERFS_FS_XATTR = y&amp;lt;/code&amp;gt; pour que le mode &amp;lt;code&amp;gt;attr&amp;lt;/code&amp;gt; soit automatiquement appliqué lors du montage d&#039;une partition en &#039;&#039;reiserfs&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cadre type=&amp;quot;note&amp;quot;&amp;gt;Noter que des fichiers d&#039;une partition en &#039;&#039;reiserfs&#039;&#039; montée sans l&#039;option &amp;lt;code&amp;gt;attrs&amp;lt;/code&amp;gt; (ou la recompilation du noyau) peuvent recevoir des attributs étendus : ils seront bien enregistrés mais n&#039;auront aucun effet. La commande de modification d&#039;attributs, &#039;&#039;chattr&#039;&#039;, ne renverra donc aucun message d&#039;erreur sans pour autant que les attributs soient pris en compte. Ce détail peut avoir des répercussion pour la sécurité du système : on peut, à tort, croire protéger des fichiers.&amp;lt;/cadre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Types d&#039;attributs==&lt;br /&gt;
Selon la norme POSIX.1, tout fichier possède les permissions en lecture, écriture et exécution. On peut leur adjoindre des attributs supplémentaires, qui s&#039;imposent à tous les utilisateurs (dont root, qui peut cependant annuler ces attributs) quand ils modifient les actions qu&#039;on peut avoir sur eux. Certains attributs sont encore expérimentaux (octobre 2005) et nécessitent de patcher le noyau pour qu&#039;ils aient un effet réel. &lt;br /&gt;
;append only (a), « ajouter seulement » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Protège le fichier contre la suppression de contenu : on ne peut que lui en ajouter. &lt;br /&gt;
;compressed (c), « compressé » ─ &#039;&#039;expérimental&#039;&#039;&lt;br /&gt;
:Le fichier est automatiquement compressé ─ si c&#039;est utile, et avec un format de compression le plus efficace ─ quand il est stocké. La décompression lors de la lecture et la compression des données ajoutées au fichier par la suite se font à la volée, de manière transparente pour l&#039;utilisateur (la commande &amp;lt;code&amp;gt;ls -l&amp;lt;/code&amp;gt;, par exemple, montre la taille décompressée). &lt;br /&gt;
:Cet attribut appliqué à un répertoire ne le compresse pas mais fait se compresser automatiquement tout nouveau fichier qu&#039;on y crée.&lt;br /&gt;
;no dump (d), « pas de sauvegarde »&lt;br /&gt;
:Un fichier ainsi marqué sera ignoré par la commande de sauvegarde &#039;&#039;dump&#039;&#039; (qui ne fonctionne que pour &#039;&#039;ext2&#039;&#039; et &#039;&#039;ext3&#039;&#039;). Cet attribut est utile pour empêcher la sauvegarde par &#039;&#039;dump&#039;&#039; d&#039;un fichier ou répertoire situés dans un système de fichiers monté avec l&#039;option &amp;lt;code&amp;gt;dump&amp;lt;/code&amp;gt; positionnée à &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; (cf &#039;&#039;[[fstab]]&#039;&#039;).&lt;br /&gt;
;immutable (i), « immuable » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Protège le fichier contre toute modification (suppression, modification, déplacement, changements de permissions), même par root, et empêche qu&#039;on crée un lien vers lui. Seule la modification des attributs étendus est permise à son propriétaire et seul root peut enlever l&#039;attribut « immuable » d&#039;un fichier.&lt;br /&gt;
:Cet attribut est sans doute l&#039;un des plus intéressants.&lt;br /&gt;
;data journalling (j), « journalisation des données » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Cet attribut n&#039;est utile qu&#039;avec une partition en &#039;&#039;ext3&#039;&#039; montée avec les options de journalisation des données &amp;lt;code&amp;gt;data=ordered&amp;lt;/code&amp;gt; (montage par défaut) ou &amp;lt;code&amp;gt;data=writeback&amp;lt;/code&amp;gt; pour simuler une journalisation du type &amp;lt;code&amp;gt;data=journal&amp;lt;/code&amp;gt;, où les données sont écrites dans le journal avant de l&#039;être dans le fichier lui-même. Consulter &amp;lt;code&amp;gt;man mount 8&amp;lt;/code&amp;gt; pour plus de détails sur les mécanismes de journalisation d&#039;&#039;&#039;ext3&#039;&#039;. &lt;br /&gt;
:Sur une partition &#039;&#039;ext3&#039;&#039; en mode &amp;lt;code&amp;gt;data=journal&amp;lt;/code&amp;gt;, cet attribut est ignoré, de même que sur les partitions en &#039;&#039;ext2&#039;&#039; et &#039;&#039;reiserfs&#039;&#039;, le premier type n&#039;étant pas journalisé, le second l&#039;étant d&#039;une manière incompatible.&lt;br /&gt;
;secure deletion (s), « effacement sécurisé »  ─ &#039;&#039;expérimental&#039;&#039;&lt;br /&gt;
:Un fichier portant cet attribut est non seulement « effacé » mais en plus les blocs qu&#039;il occupait dans le système de fichiers sont recouverts de zéros pour éviter qu&#039;on puisse récupérer les données malgré l&#039;effacement. &lt;br /&gt;
:Normalement, effacer un fichier consiste seulement à détruire toute référence vers l&#039;espace occupé par les données de ce fichier dans la partition. Il n&#039;est cependant pas question de détruire physiquement les données elles-mêmes, sauf si le fichier possède cet attribut, auquel cas non seulement il n&#039;est plus accessible mais en plus tous ses bits sont réécrits.&lt;br /&gt;
;no tail-merging (t)&lt;br /&gt;
&lt;br /&gt;
;undeletable (u), « ineffaçable » ─ &#039;&#039;&#039;expérimental&#039;&#039;&#039;&lt;br /&gt;
:Lors d&#039;un effacement, les références vers l&#039;espace du système de fichiers qui contient les données sont détruites, mais pas les données. Sans ces références, cependant, l&#039;espace anciennement réservé peut être utilisé par des fichiers nouvellement créés ou ayant été augmentés. Dans ce cas, il n&#039;est plus possible de récupérer les données en question. &lt;br /&gt;
:L&#039;attribut « ineffaçable » permet de préserver les blocs qui contenaient les données de façon à ce qu&#039;on puisse les récupérer si besoin est. L&#039;espace-disque n&#039;est donc pas libéré.&lt;br /&gt;
;no atime updates (A)&lt;br /&gt;
;synchronous directory updates (D)&lt;br /&gt;
;synchronous updates (S)&lt;br /&gt;
;top of directory hierarchy (T), « répertoire racine » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Cet attribut indique au répartiteur de blocs Orlov (ou &#039;&#039;[http://lwn.net/Articles/14633/ Orlov block allocator]&#039;&#039;, utilisé par le noyau Linux pour les systèmes de fichiers &#039;&#039;ext2&#039;&#039; et &#039;&#039;ext3&#039;&#039; depuis la version 2.5.46) que le répertoire concerné doit être considéré comme un répertoire racine de la hiérarchie des répertoires. &lt;br /&gt;
:L&#039;allocateur de blocs est un processus propre au système de fichier permettant de répartir les blocs de données des fichiers dans l&#039;espace disponible tout en garantissant une qu&#039;il ne se produira pas une trop grande fragmentation. Pour cela, on place généralement dans un même groupe de cylindres du disque dur les blocs de fichiers dépendant d&#039;un  même répertoire. Dans le cas contraire, les données risquent d&#039;être éparpillées, voire fragmentées (les blocs d&#039;un même fichier sont alors répartis sur plusieurs cylindres non contigus). On ne peut cependant prévoir à l&#039;avance de quel espace aura besoin un répertoire racine. Il pourrait ne contenir que peu de fichiers ou, au contraire, une arborescence complète et chargée. Le répartiteur Orlov prend donc soin d&#039;éloigner le plus possible les uns des autres les répertoires racines, pour qu&#039;ils disposent d&#039;un espace suffisant où croître.&lt;br /&gt;
:Ajouter cet attribut à un répertoire permet au répartiteur de le traiter comme un répertoire racine, même s&#039;il n&#039;en est pas un, et de le placer  loin des autres répertoires racines. Il est donc utile avec des sous-arborescences de fichiers complexes et lourdes qui risqueraient d&#039;être fragmentées.&lt;br /&gt;
&lt;br /&gt;
==Commande==&lt;br /&gt;
ll existe deux commandes pour accéder aux attributs étendus : &#039;&#039;lsattr&#039;&#039; (&#039;&#039;list attributes&#039;&#039;, « lister les attributs ») &#039;&#039;chattr&#039;&#039; (&amp;quot;&amp;quot;change attributes&amp;quot;&amp;quot;, « changer les attributs »). Toutes deux sont incluses dans le paquetage &#039;&#039;e2fsprogs&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
{{Copy|28.10.05|Vincent Ramos|FDL}}&lt;/div&gt;</summary>
		<author><name>Vincent Ramos</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Attributs_%C3%A9tendus&amp;diff=10127</id>
		<title>Attributs étendus</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Attributs_%C3%A9tendus&amp;diff=10127"/>
		<updated>2005-10-27T16:10:56Z</updated>

		<summary type="html">&lt;p&gt;Vincent Ramos : /* Types d&amp;#039;attributs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Les [[système de fichiers|systèmes de fichiers]] &#039;&#039;ext2&#039;&#039; et &#039;&#039;ext3&#039;&#039; (ainsi que &#039;&#039;reiserfs&#039;&#039; dans certaines conditions) offrent la possibilité de donner à des fichiers (fichiers réels ou répertoires) des &#039;&#039;&#039;attributs étendus&#039;&#039;&#039; qui s&#039;ajoutent aux [[permissions|permissions classiques POSIX.1]], éventuellement complétées par les [[ACL|permissions étendues ACL]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cadre type=&amp;quot;warning&amp;quot;&amp;gt;Seuls ces systèmes de fichiers offrant ces attributs, il n&#039;est pas prudent ─ en terme de sécurité ─ de s&#039;appuyer lourdement sur leur présence si l&#039;on est amené à transférer fréquemment des données d&#039;un système de fichiers &#039;&#039;ext&#039;&#039; à un autre. D&#039;autre part, il convient de tester ces possibilités : toutes les versions du noyau n&#039;en tiennent pas compte de la même manière.&amp;lt;/cadre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Mise en place==&lt;br /&gt;
Il n&#039;y a rien à faire pour des partitions en &#039;&#039;ext2&#039;&#039; ou &#039;&#039;ext3&#039;&#039;, qui respectent nativement les attributs étendus.&lt;br /&gt;
&lt;br /&gt;
Chose assez peu connue, cependant, le système de fichiers &#039;&#039;reiserfs&#039;&#039; peut respecter les attributs étendus, à condition d&#039;[[fstab|être monté]] avec l&#039;option idoine &amp;lt;code&amp;gt;attrs&amp;lt;/code&amp;gt;. Pour ce faire, les commandes suivantes sont appliquées : &lt;br /&gt;
* sur une partition non encore montée : &amp;lt;code&amp;gt;mount -t reiserfs -o attrs /dev/partition /point/de/montage&amp;lt;/code&amp;gt; ; &lt;br /&gt;
* sur une partition déjà montée : &amp;lt;code&amp;gt;mount -o attrs /point/de/montage&amp;lt;/code&amp;gt; (remontage à la volée).&lt;br /&gt;
&lt;br /&gt;
Pour que la prise en compte soit effective à chaque montage automatique (le cas échéant), il faut ajouter l&#039;option dans &#039;&#039;[[fstab|/etc/fstab]]&#039;&#039;. Par exemple : &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
/dev/hda1       /               reiserfs    defaults,acl,attrs 0       1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enfin, on peut recompiler son noyau avec l&#039;option &amp;lt;code&amp;gt;CONFIG_REISERFS_FS_XATTR = y&amp;lt;/code&amp;gt; pour que le mode &amp;lt;code&amp;gt;attr&amp;lt;/code&amp;gt; soit automatiquement appliqué lors du montage d&#039;une partition en &#039;&#039;reiserfs&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cadre type=&amp;quot;note&amp;quot;&amp;gt;Noter que des fichiers d&#039;une partition en &#039;&#039;reiserfs&#039;&#039; montée sans l&#039;option &amp;lt;code&amp;gt;attrs&amp;lt;/code&amp;gt; (ou la recompilation du noyau) peuvent recevoir des attributs étendus : ils seront bien enregistrés mais n&#039;auront aucun effet. La commande de modification d&#039;attributs, &#039;&#039;chattr&#039;&#039;, ne renverra donc aucun message d&#039;erreur sans pour autant que les attributs soient pris en compte. Ce détail peut avoir des répercussion pour la sécurité du système : on peut, à tort, croire protéger des fichiers.&amp;lt;/cadre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Types d&#039;attributs==&lt;br /&gt;
Selon la norme POSIX.1, tout fichier possède les permissions en lecture, écriture et exécution. On peut leur adjoindre des attributs supplémentaires, qui s&#039;imposent à tous les utilisateurs (dont root, qui peut cependant annuler ces attributs) quand ils modifient les actions qu&#039;on peut avoir sur eux. Certains attributs sont encore expérimentaux (octobre 2005) et nécessitent de patcher le noyau pour qu&#039;ils aient un effet réel. &lt;br /&gt;
;append only (a), « ajouter seulement » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Protège le fichier contre la suppression de contenu : on ne peut que lui en ajouter. &lt;br /&gt;
;compressed (c), « compressé » ─ &#039;&#039;expérimental&#039;&#039;&lt;br /&gt;
:Le fichier est automatiquement compressé ─ si c&#039;est utile, et avec un format de compression le plus efficace ─ quand il est stocké. La décompression lors de la lecture et la compression des données ajoutées au fichier par la suite se font à la volée, de manière transparente pour l&#039;utilisateur (la commande &amp;lt;code&amp;gt;ls -l&amp;lt;/code&amp;gt;, par exemple, montre la taille décompressée). &lt;br /&gt;
:Cet attribut appliqué à un répertoire ne le compresse pas mais fait se compresser automatiquement tout nouveau fichier qu&#039;on y crée.&lt;br /&gt;
;no dump (d), « pas de sauvegarde »&lt;br /&gt;
:Un fichier ainsi marqué sera ignoré par la commande de sauvegarde &#039;&#039;dump&#039;&#039; (qui ne fonctionne que pour &#039;&#039;ext2&#039;&#039; et &#039;&#039;ext3&#039;&#039;). Cet attribut est utile pour empêcher la sauvegarde par &#039;&#039;dump&#039;&#039; d&#039;un fichier ou répertoire situés dans un système de fichiers monté avec l&#039;option &amp;lt;code&amp;gt;dump&amp;lt;/code&amp;gt; positionnée à &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; (cf &#039;&#039;[[fstab]]&#039;&#039;).&lt;br /&gt;
;immutable (i), « immuable » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Protège le fichier contre toute modification (suppression, modification, déplacement, changements de permissions), même par root, et empêche qu&#039;on crée un lien vers lui. Seule la modification des attributs étendus est permise à son propriétaire et seul root peut enlever l&#039;attribut « immuable » d&#039;un fichier.&lt;br /&gt;
:Cet attribut est sans doute l&#039;un des plus intéressants.&lt;br /&gt;
;data journalling (j), « journalisation des données » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Cet attribut n&#039;est utile qu&#039;avec une partition en &#039;&#039;ext3&#039;&#039; montée avec les options de journalisation des données &amp;lt;code&amp;gt;data=ordered&amp;lt;/code&amp;gt; (montage par défaut) ou &amp;lt;code&amp;gt;data=writeback&amp;lt;/code&amp;gt; pour simuler une journalisation du type &amp;lt;code&amp;gt;data=journal&amp;lt;/code&amp;gt;, où les données sont écrites dans le journal avant de l&#039;être dans le fichier lui-même. Consulter &amp;lt;code&amp;gt;man mount 8&amp;lt;/code&amp;gt; pour plus de détails sur les mécanismes de journalisation d&#039;&#039;&#039;ext3&#039;&#039;. &lt;br /&gt;
:Sur une partition &#039;&#039;ext3&#039;&#039; en mode &amp;lt;code&amp;gt;data=journal&amp;lt;/code&amp;gt;, cet attribut est ignoré, de même que sur les partitions en &#039;&#039;ext2&#039;&#039; et &#039;&#039;reiserfs&#039;&#039;, le premier type n&#039;étant pas journalisé, le second l&#039;étant d&#039;une manière incompatible.&lt;br /&gt;
;secure deletion (s), « effacement sécurisé »  ─ &#039;&#039;expérimental&#039;&#039;&lt;br /&gt;
:Un fichier portant cet attribut est non seulement « effacé » mais en plus les blocs qu&#039;il occupait dans le système de fichiers sont recouverts de zéros pour éviter qu&#039;on puisse récupérer les données malgré l&#039;effacement. &lt;br /&gt;
:Normalement, effacer un fichier consiste seulement à détruire toute référence vers l&#039;espace occupé par les données de ce fichier dans la partition. Il n&#039;est cependant pas question de détruire physiquement les données elles-mêmes, sauf si le fichier possède cet attribut, auquel cas non seulement il n&#039;est plus accessible mais en plus tous ses bits sont réécrits.&lt;br /&gt;
;no tail-merging (t)&lt;br /&gt;
&lt;br /&gt;
;undeletable (u), « ineffaçable » ─ &#039;&#039;&#039;expérimental&#039;&#039;&#039;&lt;br /&gt;
:Lors d&#039;un effacement, les références vers l&#039;espace du système de fichiers qui contient les données sont détruites, mais pas les données. Sans ces références, cependant, l&#039;espace anciennement réservé peut être utilisé par des fichiers nouvellement créés ou ayant été augmentés. Dans ce cas, il n&#039;est plus possible de récupérer les données en question. &lt;br /&gt;
:L&#039;attribut « ineffaçable » permet de préserver les blocs qui contenaient les données de façon à ce qu&#039;on puisse les récupérer si besoin est. L&#039;espace-disque n&#039;est donc pas libéré.&lt;br /&gt;
;no atime updates (A)&lt;br /&gt;
;synchronous directory updates (D)&lt;br /&gt;
;synchronous updates (S)&lt;br /&gt;
;top of directory hierarchy (T), « répertoire racine » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Cet attribut indique au répartiteur de blocs Orlov (ou &#039;&#039;[http://lwn.net/Articles/14633/ Orlov block allocator]&#039;&#039;, utilisé par le noyau Linux pour les systèmes de fichiers &#039;&#039;ext2&#039;&#039; et &#039;&#039;ext3&#039;&#039; depuis la version 2.5.46) que le répertoire concerné doit être considéré comme un répertoire racine de la hiérarchie des répertoires. &lt;br /&gt;
:L&#039;allocateur de blocs est un processus propre au système de fichier permettant de répartir les blocs de données des fichiers dans l&#039;espace disponible tout en garantissant une qu&#039;il ne se produira pas une trop grande fragmentation. Pour cela, on place généralement dans un même groupe de cylindres du disque dur les blocs de fichiers dépendant d&#039;un  même répertoire. Dans le cas contraire, les données risquent d&#039;être éparpillées, voire fragmentées (les blocs d&#039;un même fichier sont alors répartis sur plusieurs cylindres non contigus). On ne peut cependant prévoir à l&#039;avance de quel espace aura besoin un répertoire racine. Il pourrait ne contenir que peu de fichiers ou, au contraire, une arborescence complète et chargée. Le répartiteur Orlov prend donc soin d&#039;éloigner le plus possible les uns des autres les répertoires racines, pour qu&#039;ils disposent d&#039;un espace suffisant où croître.&lt;br /&gt;
:Ajouter cet attribut à un répertoire permet au répartiteur de le traiter comme un répertoire racine, même s&#039;il n&#039;en est pas un, et de le placer  loin des autres répertoires racines. Il est donc utile avec des sous-arborescences de fichiers complexes et lourdes qui risqueraient d&#039;être fragmentées.&lt;br /&gt;
&lt;br /&gt;
==Commande==&lt;br /&gt;
lschattr, chattr&lt;br /&gt;
e2fsprogs&lt;br /&gt;
&amp;lt;!-- The  ‘c’,  ’s’,   and  ‘u’  attributes  are  not  honored by the ext2 and ext3 filesystems as implemented in the current mainline Linux kernels. These attributes may be implemented in future versions ext2 and ext3. The ‘j’ option is only useful if the filesystem is mounted as ext3. The ‘D’ option is only useful on Linux kernel 2.5.19 and later. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Copy|28.10.05|Vincent Ramos|FDL}}&lt;/div&gt;</summary>
		<author><name>Vincent Ramos</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Attributs_%C3%A9tendus&amp;diff=10126</id>
		<title>Attributs étendus</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Attributs_%C3%A9tendus&amp;diff=10126"/>
		<updated>2005-10-27T16:08:09Z</updated>

		<summary type="html">&lt;p&gt;Vincent Ramos : /* Types d&amp;#039;attributs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Les [[système de fichiers|systèmes de fichiers]] &#039;&#039;ext2&#039;&#039; et &#039;&#039;ext3&#039;&#039; (ainsi que &#039;&#039;reiserfs&#039;&#039; dans certaines conditions) offrent la possibilité de donner à des fichiers (fichiers réels ou répertoires) des &#039;&#039;&#039;attributs étendus&#039;&#039;&#039; qui s&#039;ajoutent aux [[permissions|permissions classiques POSIX.1]], éventuellement complétées par les [[ACL|permissions étendues ACL]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cadre type=&amp;quot;warning&amp;quot;&amp;gt;Seuls ces systèmes de fichiers offrant ces attributs, il n&#039;est pas prudent ─ en terme de sécurité ─ de s&#039;appuyer lourdement sur leur présence si l&#039;on est amené à transférer fréquemment des données d&#039;un système de fichiers &#039;&#039;ext&#039;&#039; à un autre. D&#039;autre part, il convient de tester ces possibilités : toutes les versions du noyau n&#039;en tiennent pas compte de la même manière.&amp;lt;/cadre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Mise en place==&lt;br /&gt;
Il n&#039;y a rien à faire pour des partitions en &#039;&#039;ext2&#039;&#039; ou &#039;&#039;ext3&#039;&#039;, qui respectent nativement les attributs étendus.&lt;br /&gt;
&lt;br /&gt;
Chose assez peu connue, cependant, le système de fichiers &#039;&#039;reiserfs&#039;&#039; peut respecter les attributs étendus, à condition d&#039;[[fstab|être monté]] avec l&#039;option idoine &amp;lt;code&amp;gt;attrs&amp;lt;/code&amp;gt;. Pour ce faire, les commandes suivantes sont appliquées : &lt;br /&gt;
* sur une partition non encore montée : &amp;lt;code&amp;gt;mount -t reiserfs -o attrs /dev/partition /point/de/montage&amp;lt;/code&amp;gt; ; &lt;br /&gt;
* sur une partition déjà montée : &amp;lt;code&amp;gt;mount -o attrs /point/de/montage&amp;lt;/code&amp;gt; (remontage à la volée).&lt;br /&gt;
&lt;br /&gt;
Pour que la prise en compte soit effective à chaque montage automatique (le cas échéant), il faut ajouter l&#039;option dans &#039;&#039;[[fstab|/etc/fstab]]&#039;&#039;. Par exemple : &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
/dev/hda1       /               reiserfs    defaults,acl,attrs 0       1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enfin, on peut recompiler son noyau avec l&#039;option &amp;lt;code&amp;gt;CONFIG_REISERFS_FS_XATTR = y&amp;lt;/code&amp;gt; pour que le mode &amp;lt;code&amp;gt;attr&amp;lt;/code&amp;gt; soit automatiquement appliqué lors du montage d&#039;une partition en &#039;&#039;reiserfs&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cadre type=&amp;quot;note&amp;quot;&amp;gt;Noter que des fichiers d&#039;une partition en &#039;&#039;reiserfs&#039;&#039; montée sans l&#039;option &amp;lt;code&amp;gt;attrs&amp;lt;/code&amp;gt; (ou la recompilation du noyau) peuvent recevoir des attributs étendus : ils seront bien enregistrés mais n&#039;auront aucun effet. La commande de modification d&#039;attributs, &#039;&#039;chattr&#039;&#039;, ne renverra donc aucun message d&#039;erreur sans pour autant que les attributs soient pris en compte. Ce détail peut avoir des répercussion pour la sécurité du système : on peut, à tort, croire protéger des fichiers.&amp;lt;/cadre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Types d&#039;attributs==&lt;br /&gt;
Selon la norme POSIX.1, tout fichier possède les permissions en lecture, écriture et exécution. On peut leur adjoindre des attributs supplémentaires, qui s&#039;imposent à tous les utilisateurs (dont root, qui peut cependant annuler ces attributs) quand ils modifient les actions qu&#039;on peut avoir sur eux. Certains attributs sont encore expérimentaux (octobre 2005) et nécessitent de patcher le noyau pour qu&#039;ils aient un effet réel. &lt;br /&gt;
&lt;br /&gt;
;append only (a), « ajouter seulement » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Protège le fichier contre la suppression de contenu : on ne peut que lui en ajouter. &lt;br /&gt;
;compressed (c), « compressé » ─ &#039;&#039;expérimental&#039;&#039;&lt;br /&gt;
:Le fichier est automatiquement compressé ─ si c&#039;est utile, et avec un format de compression le plus efficace ─ quand il est stocké. La décompression lors de la lecture et la compression des données ajoutées au fichier par la suite se font à la volée, de manière transparente pour l&#039;utilisateur (la commande &amp;lt;code&amp;gt;ls -l&amp;lt;/code&amp;gt;, par exemple, montre la taille décompressée). &lt;br /&gt;
:Cet attribut appliqué à un répertoire ne le compresse pas mais fait se compresser automatiquement tout nouveau fichier qu&#039;on y crée.&lt;br /&gt;
;no dump (d), « pas de sauvegarde »&lt;br /&gt;
:Un fichier ainsi marqué sera ignoré par la commande de sauvegarde &#039;&#039;dump&#039;&#039;. Cet attribut est utile pour empêcher la sauvegarde par &#039;&#039;dump&#039;&#039; d&#039;un fichier ou répertoire situés dans un système de fichiers monté avec l&#039;option &amp;lt;code&amp;gt;dump&amp;lt;/code&amp;gt; positionnée à &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; (cf &#039;&#039;[[fstab]]&#039;&#039;).&lt;br /&gt;
;immutable (i), « immuable » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Protège le fichier contre toute modification (suppression, modification, déplacement, changements de permissions), même par root, et empêche qu&#039;on crée un lien vers lui. Seule la modification des attributs étendus est permise à son propriétaire et seul root peut enlever l&#039;attribut « immuable » d&#039;un fichier.&lt;br /&gt;
:Cet attribut est sans doute l&#039;un des plus intéressants.&lt;br /&gt;
;data journalling (j), « journalisation des données » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Cet attribut n&#039;est utile qu&#039;avec une partition en &#039;&#039;ext3&#039;&#039; montée avec les options de journalisation des données &amp;lt;code&amp;gt;data=ordered&amp;lt;/code&amp;gt; (montage par défaut) ou &amp;lt;code&amp;gt;data=writeback&amp;lt;/code&amp;gt; pour simuler une journalisation du type &amp;lt;code&amp;gt;data=journal&amp;lt;/code&amp;gt;, où les données sont écrites dans le journal avant de l&#039;être dans le fichier lui-même. Consulter &amp;lt;code&amp;gt;man mount 8&amp;lt;/code&amp;gt; pour plus de détails sur les mécanismes de journalisation d&#039;&#039;&#039;ext3&#039;&#039;. &lt;br /&gt;
:Sur une partition &#039;&#039;ext3&#039;&#039; en mode &amp;lt;code&amp;gt;data=journal&amp;lt;/code&amp;gt;, cet attribut est ignoré, de même que sur les partitions en &#039;&#039;ext2&#039;&#039; et &#039;&#039;reiserfs&#039;&#039;, le premier type n&#039;étant pas journalisé, le second l&#039;étant d&#039;une manière incompatible.&lt;br /&gt;
;secure deletion (s), « effacement sécurisé »  ─ &#039;&#039;expérimental&#039;&#039;&lt;br /&gt;
:Un fichier portant cet attribut est non seulement « effacé » mais en plus les blocs qu&#039;il occupait dans le système de fichiers sont recouverts de zéros pour éviter qu&#039;on puisse récupérer les données malgré l&#039;effacement. &lt;br /&gt;
:Normalement, effacer un fichier consiste seulement à détruire toute référence vers l&#039;espace occupé par les données de ce fichier dans la partition. Il n&#039;est cependant pas question de détruire physiquement les données elles-mêmes, sauf si le fichier possède cet attribut, auquel cas non seulement il n&#039;est plus accessible mais en plus tous ses bits sont réécrits.&lt;br /&gt;
;no tail-merging (t)&lt;br /&gt;
&lt;br /&gt;
;undeletable (u), « ineffaçable » ─ &#039;&#039;&#039;expérimental&#039;&#039;&#039;&lt;br /&gt;
:Lors d&#039;un effacement, les références vers l&#039;espace du système de fichiers qui contient les données sont détruites, mais pas les données. Sans ces références, cependant, l&#039;espace anciennement réservé peut être utilisé par des fichiers nouvellement créés ou ayant été augmentés. Dans ce cas, il n&#039;est plus possible de récupérer les données en question. &lt;br /&gt;
:L&#039;attribut « ineffaçable » permet de préserver les blocs qui contenaient les données de façon à ce qu&#039;on puisse les récupérer si besoin est. L&#039;espace-disque n&#039;est donc pas libéré.&lt;br /&gt;
;no atime updates (A)&lt;br /&gt;
;synchronous directory updates (D)&lt;br /&gt;
;synchronous updates (S)&lt;br /&gt;
;top of directory hierarchy (T), « répertoire racine » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Cet attribut indique au répartiteur de blocs Orlov (ou &#039;&#039;[http://lwn.net/Articles/14633/ Orlov block allocator]&#039;&#039;, utilisé par le noyau Linux pour les systèmes de fichiers &#039;&#039;ext2&#039;&#039; et &#039;&#039;ext3&#039;&#039; depuis la version 2.5.46) que le répertoire concerné doit être considéré comme un répertoire racine de la hiérarchie des répertoires. &lt;br /&gt;
:L&#039;allocateur de blocs est un processus propre au système de fichier permettant de répartir les blocs de données des fichiers dans l&#039;espace disponible tout en garantissant une qu&#039;il ne se produira pas une trop grande fragmentation. Pour cela, on place généralement dans un même groupe de cylindres du disque dur les blocs de fichiers dépendant d&#039;un  même répertoire. Dans le cas contraire, les données risquent d&#039;être éparpillées, voire fragmentées (les blocs d&#039;un même fichier sont alors répartis sur plusieurs cylindres non contigus). On ne peut cependant prévoir à l&#039;avance de quel espace aura besoin un répertoire racine. Il pourrait ne contenir que peu de fichiers ou, au contraire, une arborescence complète et chargée. Le répartiteur Orlov prend donc soin d&#039;éloigner le plus possible les uns des autres les répertoires racines, pour qu&#039;ils disposent d&#039;un espace suffisant où croître.&lt;br /&gt;
:Ajouter cet attribut à un répertoire permet au répartiteur de le traiter comme un répertoire racine, même s&#039;il n&#039;en est pas un, et de le placer  loin des autres répertoires racines. Il est donc utile avec des sous-arborescences de fichiers complexes et lourdes qui risqueraient d&#039;être fragmentées.&lt;br /&gt;
&lt;br /&gt;
==Commande==&lt;br /&gt;
lschattr, chattr&lt;br /&gt;
e2fsprogs&lt;br /&gt;
&amp;lt;!-- The  ‘c’,  ’s’,   and  ‘u’  attributes  are  not  honored by the ext2 and ext3 filesystems as implemented in the current mainline Linux kernels. These attributes may be implemented in future versions ext2 and ext3. The ‘j’ option is only useful if the filesystem is mounted as ext3. The ‘D’ option is only useful on Linux kernel 2.5.19 and later. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Copy|28.10.05|Vincent Ramos|FDL}}&lt;/div&gt;</summary>
		<author><name>Vincent Ramos</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Attributs_%C3%A9tendus&amp;diff=10124</id>
		<title>Attributs étendus</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Attributs_%C3%A9tendus&amp;diff=10124"/>
		<updated>2005-10-27T15:43:33Z</updated>

		<summary type="html">&lt;p&gt;Vincent Ramos : /* Types d&amp;#039;attributs */ Suite&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Les [[système de fichiers|systèmes de fichiers]] &#039;&#039;ext2&#039;&#039; et &#039;&#039;ext3&#039;&#039; (ainsi que &#039;&#039;reiserfs&#039;&#039; dans certaines conditions) offrent la possibilité de donner à des fichiers (fichiers réels ou répertoires) des &#039;&#039;&#039;attributs étendus&#039;&#039;&#039; qui s&#039;ajoutent aux [[permissions|permissions classiques POSIX.1]], éventuellement complétées par les [[ACL|permissions étendues ACL]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cadre type=&amp;quot;warning&amp;quot;&amp;gt;Seuls ces systèmes de fichiers offrant ces attributs, il n&#039;est pas prudent ─ en terme de sécurité ─ de s&#039;appuyer lourdement sur leur présence si l&#039;on est amené à transférer fréquemment des données d&#039;un système de fichiers &#039;&#039;ext&#039;&#039; à un autre. D&#039;autre part, il convient de tester ces possibilités : toutes les versions du noyau n&#039;en tiennent pas compte de la même manière.&amp;lt;/cadre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Mise en place==&lt;br /&gt;
Il n&#039;y a rien à faire pour des partitions en &#039;&#039;ext2&#039;&#039; ou &#039;&#039;ext3&#039;&#039;, qui respectent nativement les attributs étendus.&lt;br /&gt;
&lt;br /&gt;
Chose assez peu connue, cependant, le système de fichiers &#039;&#039;reiserfs&#039;&#039; peut respecter les attributs étendus, à condition d&#039;[[fstab|être monté]] avec l&#039;option idoine &amp;lt;code&amp;gt;attrs&amp;lt;/code&amp;gt;. Pour ce faire, les commandes suivantes sont appliquées : &lt;br /&gt;
* sur une partition non encore montée : &amp;lt;code&amp;gt;mount -t reiserfs -o attrs /dev/partition /point/de/montage&amp;lt;/code&amp;gt; ; &lt;br /&gt;
* sur une partition déjà montée : &amp;lt;code&amp;gt;mount -o attrs /point/de/montage&amp;lt;/code&amp;gt; (remontage à la volée).&lt;br /&gt;
&lt;br /&gt;
Pour que la prise en compte soit effective à chaque montage automatique (le cas échéant), il faut ajouter l&#039;option dans &#039;&#039;[[fstab|/etc/fstab]]&#039;&#039;. Par exemple : &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
/dev/hda1       /               reiserfs    defaults,acl,attrs 0       1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enfin, on peut recompiler son noyau avec l&#039;option &amp;lt;code&amp;gt;CONFIG_REISERFS_FS_XATTR = y&amp;lt;/code&amp;gt; pour que le mode &amp;lt;code&amp;gt;attr&amp;lt;/code&amp;gt; soit automatiquement appliqué lors du montage d&#039;une partition en &#039;&#039;reiserfs&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cadre type=&amp;quot;note&amp;quot;&amp;gt;Noter que des fichiers d&#039;une partition en &#039;&#039;reiserfs&#039;&#039; montée sans l&#039;option &amp;lt;code&amp;gt;attrs&amp;lt;/code&amp;gt; (ou la recompilation du noyau) peuvent recevoir des attributs étendus : ils seront bien enregistrés mais n&#039;auront aucun effet. La commande de modification d&#039;attributs, &#039;&#039;chattr&#039;&#039;, ne renverra donc aucun message d&#039;erreur sans pour autant que les attributs soient pris en compte. Ce détail peut avoir des répercussion pour la sécurité du système : on peut, à tort, croire protéger des fichiers.&amp;lt;/cadre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Types d&#039;attributs==&lt;br /&gt;
Selon la norme POSIX.1, tout fichier possède les permissions en lecture, écriture et exécution. On peut leur adjoindre des attributs supplémentaires, qui s&#039;imposent à tous les utilisateurs hormis root quand ils modifient les actions qu&#039;on peut avoir sur eux. Certains attributs sont actuellement expérimentaux (octobre 2005) et nécessitent de patcher le noyau pour qu&#039;ils aient un effet réel. &lt;br /&gt;
&lt;br /&gt;
;append only (a), « ajouter seulement » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Protège le fichier contre la suppression de contenu : on ne peut que lui en ajouter. &lt;br /&gt;
;compressed (c), « compressé » ─ &#039;&#039;expérimental&#039;&#039;&lt;br /&gt;
:Le fichier est automatiquement compressé ─ si c&#039;est utile, et avec un format de compression le plus efficace ─ quand il est stocké. La décompression lors de la lecture et la compression des données ajoutées au fichier par la suite se font à la volée, de manière transparente pour l&#039;utilisateur (la commande &amp;lt;code&amp;gt;ls -l&amp;lt;/code&amp;gt;, par exemple, montre la taille décompressée). &lt;br /&gt;
:Cet attribut appliqué à un répertoire ne le compresse pas mais fait se compresser automatiquement tout nouveau fichier qu&#039;on y crée.&lt;br /&gt;
;no dump (d), « pas de sauvegarde »&lt;br /&gt;
:Un fichier ainsi marqué sera ignoré par la commande de sauvegarde &#039;&#039;dump&#039;&#039;. Cet attribut est utile pour empêcher la sauvegarde par &#039;&#039;dump&#039;&#039; d&#039;un fichier ou répertoire situés dans un système de fichiers monté avec l&#039;option &amp;lt;code&amp;gt;dump&amp;lt;/code&amp;gt; positionnée à &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; (cf &#039;&#039;[[fstab]]&#039;&#039;).&lt;br /&gt;
;immutable (i), « immuable » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Protège le fichier contre toute modification (suppression, modification, déplacement, changements de permissions), même par root, et empêche qu&#039;on crée un lien vers lui. Seule la modification des attributs étendus est permise à son propriétaire et seul root peut enlever l&#039;attribut « immuable » d&#039;un fichier.&lt;br /&gt;
:Cet attribut est sans doute l&#039;un des plus intéressants.&lt;br /&gt;
;data journalling (j), « journalisation des données » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Cet attribut n&#039;est utile qu&#039;avec une partition en &#039;&#039;ext3&#039;&#039; montée avec les options de journalisation des données &amp;lt;code&amp;gt;data=ordered&amp;lt;/code&amp;gt; (montage par défaut) ou &amp;lt;code&amp;gt;data=writeback&amp;lt;/code&amp;gt; pour simuler une journalisation du type &amp;lt;code&amp;gt;data=journal&amp;lt;/code&amp;gt;, où les données sont écrites dans le journal avant de l&#039;être dans le fichier lui-même. Consulter &amp;lt;code&amp;gt;man mount 8&amp;lt;/code&amp;gt; pour plus de détails sur les mécanismes de journalisation d&#039;&#039;&#039;ext3&#039;&#039;. &lt;br /&gt;
:Sur une partition &#039;&#039;ext3&#039;&#039; en mode &amp;lt;code&amp;gt;data=journal&amp;lt;/code&amp;gt;, cet attribut est ignoré, de même que sur les partitions en &#039;&#039;ext2&#039;&#039; et &#039;&#039;reiserfs&#039;&#039;, le premier type n&#039;étant pas journalisé, le second l&#039;étant d&#039;une manière incompatible.&lt;br /&gt;
;secure deletion (s), « effacement sécurisé »  ─ &#039;&#039;expérimental&#039;&#039;&lt;br /&gt;
:Un fichier portant cet attribut est non seulement « effacé » mais en plus les blocs qu&#039;il occupait dans le système de fichiers sont recouverts de zéros pour éviter qu&#039;on puisse récupérer les données malgré l&#039;effacement. &lt;br /&gt;
:Normalement, effacer un fichier consiste seulement à détruire toute référence vers l&#039;espace occupé par les données de ce fichier dans la partition. Il n&#039;est cependant pas question de détruire physiquement les données elles-mêmes, sauf si le fichier possède cet attribut, auquel cas non seulement il n&#039;est plus accessible mais en plus tous ses bits sont réécrits.&lt;br /&gt;
;no tail-merging (t)&lt;br /&gt;
;undeletable (u), « ineffaçable » ─ &#039;&#039;&#039;expérimental&#039;&#039;&#039;&lt;br /&gt;
:Lors d&#039;un effacement, les références vers l&#039;espace du système de fichiers qui contient les données sont détruites, mais pas les données. Sans ces références, cependant, l&#039;espace anciennement réservé peut être utilisé par des fichiers nouvellement créés ou ayant été augmentés. Dans ce cas, il n&#039;est plus possible de récupérer les données en question. &lt;br /&gt;
:L&#039;attribut « ineffaçable » permet de préserver les blocs qui contenaient les données de façon à ce qu&#039;on puisse les récupérer si besoin est. L&#039;espace-disque n&#039;est donc pas libéré.&lt;br /&gt;
;no atime updates (A)&lt;br /&gt;
;synchronous directory updates (D)&lt;br /&gt;
;synchronous updates (S)&lt;br /&gt;
;top of directory hierarchy (T), « répertoire racine » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Cet attribut indique au répartiteur de blocs Orlov (ou &#039;&#039;[http://lwn.net/Articles/14633/ Orlov block allocator]&#039;&#039;, utilisé par le noyau Linux pour les systèmes de fichiers &#039;&#039;ext2&#039;&#039; et &#039;&#039;ext3&#039;&#039; depuis la version 2.5.46) que le répertoire concerné doit être considéré comme un répertoire racine de la hiérarchie des répertoires. &lt;br /&gt;
:L&#039;allocateur de blocs est un processus propre au système de fichier permettant de répartir les blocs de données des fichiers dans l&#039;espace disponible tout en garantissant une qu&#039;il ne se produira pas une trop grande fragmentation. Pour cela, on place généralement dans un même groupe de cylindres du disque dur les blocs de fichiers dépendant d&#039;un  même répertoire. Dans le cas contraire, les données risquent d&#039;être éparpillées, voire fragmentées (les blocs d&#039;un même fichier sont alors répartis sur plusieurs cylindres non contigus). On ne peut cependant prévoir à l&#039;avance de quel espace aura besoin un répertoire racine. Il pourrait ne contenir que peu de fichiers ou, au contraire, une arborescence complète et chargée. Le répartiteur Orlov prend donc soin d&#039;éloigner le plus possible les uns des autres les répertoires racines, pour qu&#039;ils disposent d&#039;un espace suffisant où croître.&lt;br /&gt;
:Ajouter cet attribut à un répertoire permet au répartiteur de le traiter comme un répertoire racine, même s&#039;il n&#039;en est pas un, et de le placer  loin des autres répertoires racines. Il est donc utile avec des sous-arborescences de fichiers complexes et lourdes qui risqueraient d&#039;être fragmentées.&lt;br /&gt;
&lt;br /&gt;
==Commande==&lt;br /&gt;
lschattr, chattr&lt;br /&gt;
e2fsprogs&lt;br /&gt;
&amp;lt;!-- The  ‘c’,  ’s’,   and  ‘u’  attributes  are  not  honored by the ext2 and ext3 filesystems as implemented in the current mainline Linux kernels. These attributes may be implemented in future versions ext2 and ext3. The ‘j’ option is only useful if the filesystem is mounted as ext3. The ‘D’ option is only useful on Linux kernel 2.5.19 and later. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Copy|28.10.05|Vincent Ramos|FDL}}&lt;/div&gt;</summary>
		<author><name>Vincent Ramos</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Attributs_%C3%A9tendus&amp;diff=10123</id>
		<title>Attributs étendus</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Attributs_%C3%A9tendus&amp;diff=10123"/>
		<updated>2005-10-27T15:17:44Z</updated>

		<summary type="html">&lt;p&gt;Vincent Ramos : /* Types d&amp;#039;attributs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Les [[système de fichiers|systèmes de fichiers]] &#039;&#039;ext2&#039;&#039; et &#039;&#039;ext3&#039;&#039; (ainsi que &#039;&#039;reiserfs&#039;&#039; dans certaines conditions) offrent la possibilité de donner à des fichiers (fichiers réels ou répertoires) des &#039;&#039;&#039;attributs étendus&#039;&#039;&#039; qui s&#039;ajoutent aux [[permissions|permissions classiques POSIX.1]], éventuellement complétées par les [[ACL|permissions étendues ACL]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cadre type=&amp;quot;warning&amp;quot;&amp;gt;Seuls ces systèmes de fichiers offrant ces attributs, il n&#039;est pas prudent ─ en terme de sécurité ─ de s&#039;appuyer lourdement sur leur présence si l&#039;on est amené à transférer fréquemment des données d&#039;un système de fichiers &#039;&#039;ext&#039;&#039; à un autre. D&#039;autre part, il convient de tester ces possibilités : toutes les versions du noyau n&#039;en tiennent pas compte de la même manière.&amp;lt;/cadre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Mise en place==&lt;br /&gt;
Il n&#039;y a rien à faire pour des partitions en &#039;&#039;ext2&#039;&#039; ou &#039;&#039;ext3&#039;&#039;, qui respectent nativement les attributs étendus.&lt;br /&gt;
&lt;br /&gt;
Chose assez peu connue, cependant, le système de fichiers &#039;&#039;reiserfs&#039;&#039; peut respecter les attributs étendus, à condition d&#039;[[fstab|être monté]] avec l&#039;option idoine &amp;lt;code&amp;gt;attrs&amp;lt;/code&amp;gt;. Pour ce faire, les commandes suivantes sont appliquées : &lt;br /&gt;
* sur une partition non encore montée : &amp;lt;code&amp;gt;mount -t reiserfs -o attrs /dev/partition /point/de/montage&amp;lt;/code&amp;gt; ; &lt;br /&gt;
* sur une partition déjà montée : &amp;lt;code&amp;gt;mount -o attrs /point/de/montage&amp;lt;/code&amp;gt; (remontage à la volée).&lt;br /&gt;
&lt;br /&gt;
Pour que la prise en compte soit effective à chaque montage automatique (le cas échéant), il faut ajouter l&#039;option dans &#039;&#039;[[fstab|/etc/fstab]]&#039;&#039;. Par exemple : &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
/dev/hda1       /               reiserfs    defaults,acl,attrs 0       1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enfin, on peut recompiler son noyau avec l&#039;option &amp;lt;code&amp;gt;CONFIG_REISERFS_FS_XATTR = y&amp;lt;/code&amp;gt; pour que le mode &amp;lt;code&amp;gt;attr&amp;lt;/code&amp;gt; soit automatiquement appliqué lors du montage d&#039;une partition en &#039;&#039;reiserfs&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cadre type=&amp;quot;note&amp;quot;&amp;gt;Noter que des fichiers d&#039;une partition en &#039;&#039;reiserfs&#039;&#039; montée sans l&#039;option &amp;lt;code&amp;gt;attrs&amp;lt;/code&amp;gt; (ou la recompilation du noyau) peuvent recevoir des attributs étendus : ils seront bien enregistrés mais n&#039;auront aucun effet. La commande de modification d&#039;attributs, &#039;&#039;chattr&#039;&#039;, ne renverra donc aucun message d&#039;erreur sans pour autant que les attributs soient pris en compte. Ce détail peut avoir des répercussion pour la sécurité du système : on peut, à tort, croire protéger des fichiers.&amp;lt;/cadre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Types d&#039;attributs==&lt;br /&gt;
Selon la norme POSIX.1, tout fichier possède les permissions en lecture, écriture et exécution. On peut leur adjoindre des attributs supplémentaires, qui s&#039;imposent à tous les utilisateurs hormis root quand ils modifient les actions qu&#039;on peut avoir sur eux. Certains attributs sont actuellement expérimentaux (octobre 2005) et nécessitent de patcher le noyau pour qu&#039;ils aient un effet réel. &lt;br /&gt;
&lt;br /&gt;
;append only (a), « ajouter seulement » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Protège le fichier contre la suppression de contenu : on ne peut que lui en ajouter. &lt;br /&gt;
;compressed (c), « compressé » ─ &#039;&#039;expérimental&#039;&#039;&lt;br /&gt;
:Le fichier est automatiquement compressé ─ si c&#039;est utile, et avec un format de compression le plus efficace ─ quand il est stocké. La décompression lors de la lecture et la compression des données ajoutées au fichier par la suite se font à la volée, de manière transparente pour l&#039;utilisateur (la commande &amp;lt;code&amp;gt;ls -l&amp;lt;/code&amp;gt;, par exemple, montre la taille décompressée). &lt;br /&gt;
:Cet attribut appliqué à un répertoire ne le compresse pas mais fait se compresser automatiquement tout nouveau fichier qu&#039;on y crée.&lt;br /&gt;
;no dump (d), « pas de sauvegarde »&lt;br /&gt;
:Un fichier ainsi marqué sera ignoré par la commande de sauvegarde &#039;&#039;dump&#039;&#039;.&lt;br /&gt;
;immutable (i), « immuable » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Protège le fichier contre toute modification (suppression, modification, déplacement, changements de permissions), même par root, et empêche qu&#039;on crée un lien vers lui. Seule la modification des attributs étendus est permise à son propriétaire et seul root peut enlever l&#039;attribut « immuable » d&#039;un fichier.&lt;br /&gt;
:Cet attribut est sans doute l&#039;un des plus intéressants.&lt;br /&gt;
;data journalling (j), « journalisation des données » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Cet attribut n&#039;est utile qu&#039;avec une partition en &#039;&#039;ext3&#039;&#039; montée avec les options de journalisation des données &amp;lt;code&amp;gt;data=ordered&amp;lt;/code&amp;gt; (montage par défaut) ou &amp;lt;code&amp;gt;data=writeback&amp;lt;/code&amp;gt; pour simuler une journalisation du type &amp;lt;code&amp;gt;data=journal&amp;lt;/code&amp;gt;, où les données sont écrites dans le journal avant de l&#039;être dans le fichier lui-même. Consulter &amp;lt;code&amp;gt;man mount 8&amp;lt;/code&amp;gt; pour plus de détails sur les mécanismes de journalisation d&#039;&#039;&#039;ext3&#039;&#039;. &lt;br /&gt;
:Sur une partition &#039;&#039;ext3&#039;&#039; en mode &amp;lt;code&amp;gt;data=journal&amp;lt;/code&amp;gt;, cet attribut est ignoré, de même que sur les partitions en &#039;&#039;ext2&#039;&#039; et &#039;&#039;reiserfs&#039;&#039;, le premier type n&#039;étant pas journalisé, le second l&#039;étant d&#039;une manière incompatible.&lt;br /&gt;
;secure deletion (s), « effacement sécurisé »  ─ &#039;&#039;expérimental&#039;&#039;&lt;br /&gt;
:Un fichier portant cet attribut est non seulement « effacé » mais en plus les blocs qu&#039;il occupait dans le système de fichiers sont recouverts de zéros pour éviter qu&#039;on puisse récupérer les données malgré l&#039;effacement. &lt;br /&gt;
:Normalement, effacer un fichier consiste seulement à détruire toute référence vers l&#039;espace occupé par les données de ce fichier dans la partition. Il n&#039;est cependant pas question de détruire physiquement les données elles-mêmes, sauf si le fichier possède cet attribut, auquel cas non seulement il n&#039;est plus accessible mais en plus tous ses bits sont réécrits.&lt;br /&gt;
;no tail-merging (t)&lt;br /&gt;
;undeletable (u), « ineffaçable » ─ &#039;&#039;&#039;expérimental&#039;&#039;&#039;&lt;br /&gt;
:Lors d&#039;un effacement, les références vers l&#039;espace du système de fichiers qui contient les données sont détruites, mais pas les données. Sans ces références, cependant, l&#039;espace anciennement réservé peut être utilisé par des fichiers nouvellement créés ou ayant été augmentés. Dans ce cas, il n&#039;est plus possible de récupérer les données en question. &lt;br /&gt;
:L&#039;attribut « ineffaçable » permet de préserver les blocs qui contenaient les données de façon à ce qu&#039;on puisse les récupérer si besoin est. L&#039;espace-disque n&#039;est donc pas libéré.&lt;br /&gt;
;no atime updates (A)&lt;br /&gt;
;synchronous directory updates (D)&lt;br /&gt;
;synchronous updates (S)&lt;br /&gt;
;top of directory hierarchy (T), « répertoire racine » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Cet attribut indique au répartiteur de blocs Orlov (ou &#039;&#039;[http://lwn.net/Articles/14633/ Orlov block allocator]&#039;&#039;, utilisé par le noyau Linux pour les systèmes de fichiers &#039;&#039;ext2&#039;&#039; et &#039;&#039;ext3&#039;&#039; depuis la version 2.5.46) que le répertoire concerné doit être considéré comme un répertoire racine de la hiérarchie des répertoires. &lt;br /&gt;
:L&#039;allocateur de blocs est un processus propre au système de fichier permettant de répartir les blocs de données des fichiers dans l&#039;espace disponible tout en garantissant une qu&#039;il ne se produira pas une trop grande fragmentation. Pour cela, on place généralement dans un même groupe de cylindres du disque dur les blocs de fichiers dépendant d&#039;un  même répertoire. Dans le cas contraire, les données risquent d&#039;être éparpillées, voire fragmentées (les blocs d&#039;un même fichier sont alors répartis sur plusieurs cylindres non contigus). On ne peut cependant prévoir à l&#039;avance de quel espace aura besoin un répertoire racine. Il pourrait ne contenir que peu de fichiers ou, au contraire, une arborescence complète et chargée. Le répartiteur Orlov prend donc soin d&#039;éloigner le plus possible les uns des autres les répertoires racines, pour qu&#039;ils disposent d&#039;un espace suffisant où croître.&lt;br /&gt;
:Ajouter cet attribut à un répertoire permet au répartiteur de le traiter comme un répertoire racine, même s&#039;il n&#039;en est pas un, et de le placer  loin des autres répertoires racines. Il est donc utile avec des sous-arborescences de fichiers complexes et lourdes qui risqueraient d&#039;être fragmentées.&lt;br /&gt;
&lt;br /&gt;
==Commande==&lt;br /&gt;
lschattr, chattr&lt;br /&gt;
e2fsprogs&lt;br /&gt;
&amp;lt;!-- The  ‘c’,  ’s’,   and  ‘u’  attributes  are  not  honored by the ext2 and ext3 filesystems as implemented in the current mainline Linux kernels. These attributes may be implemented in future versions ext2 and ext3. The ‘j’ option is only useful if the filesystem is mounted as ext3. The ‘D’ option is only useful on Linux kernel 2.5.19 and later. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Copy|28.10.05|Vincent Ramos|FDL}}&lt;/div&gt;</summary>
		<author><name>Vincent Ramos</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Attributs_%C3%A9tendus&amp;diff=10119</id>
		<title>Attributs étendus</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Attributs_%C3%A9tendus&amp;diff=10119"/>
		<updated>2005-10-27T14:45:58Z</updated>

		<summary type="html">&lt;p&gt;Vincent Ramos : /* Types d&amp;#039;attributs */ mise en page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Les [[système de fichiers|systèmes de fichiers]] &#039;&#039;ext2&#039;&#039; et &#039;&#039;ext3&#039;&#039; (ainsi que &#039;&#039;reiserfs&#039;&#039; dans certaines conditions) offrent la possibilité de donner à des fichiers (fichiers réels ou répertoires) des &#039;&#039;&#039;attributs étendus&#039;&#039;&#039; qui s&#039;ajoutent aux [[permissions|permissions classiques POSIX.1]], éventuellement complétées par les [[ACL|permissions étendues ACL]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cadre type=&amp;quot;warning&amp;quot;&amp;gt;Seuls ces systèmes de fichiers offrant ces attributs, il n&#039;est pas prudent ─ en terme de sécurité ─ de s&#039;appuyer lourdement sur leur présence si l&#039;on est amené à transférer fréquemment des données d&#039;un système de fichiers &#039;&#039;ext&#039;&#039; à un autre. D&#039;autre part, il convient de tester ces possibilités : toutes les versions du noyau n&#039;en tiennent pas compte de la même manière.&amp;lt;/cadre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Mise en place==&lt;br /&gt;
Il n&#039;y a rien à faire pour des partitions en &#039;&#039;ext2&#039;&#039; ou &#039;&#039;ext3&#039;&#039;, qui respectent nativement les attributs étendus.&lt;br /&gt;
&lt;br /&gt;
Chose assez peu connue, cependant, le système de fichiers &#039;&#039;reiserfs&#039;&#039; peut respecter les attributs étendus, à condition d&#039;[[fstab|être monté]] avec l&#039;option idoine &amp;lt;code&amp;gt;attrs&amp;lt;/code&amp;gt;. Pour ce faire, les commandes suivantes sont appliquées : &lt;br /&gt;
* sur une partition non encore montée : &amp;lt;code&amp;gt;mount -t reiserfs -o attrs /dev/partition /point/de/montage&amp;lt;/code&amp;gt; ; &lt;br /&gt;
* sur une partition déjà montée : &amp;lt;code&amp;gt;mount -o attrs /point/de/montage&amp;lt;/code&amp;gt; (remontage à la volée).&lt;br /&gt;
&lt;br /&gt;
Pour que la prise en compte soit effective à chaque montage automatique (le cas échéant), il faut ajouter l&#039;option dans &#039;&#039;[[fstab|/etc/fstab]]&#039;&#039;. Par exemple : &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
/dev/hda1       /               reiserfs    defaults,acl,attrs 0       1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enfin, on peut recompiler son noyau avec l&#039;option &amp;lt;code&amp;gt;CONFIG_REISERFS_FS_XATTR = y&amp;lt;/code&amp;gt; pour que le mode &amp;lt;code&amp;gt;attr&amp;lt;/code&amp;gt; soit automatiquement appliqué lors du montage d&#039;une partition en &#039;&#039;reiserfs&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cadre type=&amp;quot;note&amp;quot;&amp;gt;Noter que des fichiers d&#039;une partition en &#039;&#039;reiserfs&#039;&#039; montée sans l&#039;option &amp;lt;code&amp;gt;attrs&amp;lt;/code&amp;gt; (ou la recompilation du noyau) peuvent recevoir des attributs étendus : ils seront bien enregistrés mais n&#039;auront aucun effet. La commande de modification d&#039;attributs, &#039;&#039;chattr&#039;&#039;, ne renverra donc aucun message d&#039;erreur sans pour autant que les attributs soient pris en compte. Ce détail peut avoir des répercussion pour la sécurité du système : on peut, à tort, croire protéger des fichiers.&amp;lt;/cadre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Types d&#039;attributs==&lt;br /&gt;
Selon la norme POSIX.1, tout fichier possède les permissions en lecture, écriture et exécution. On peut leur adjoindre des attributs supplémentaires, qui s&#039;imposent à tous les utilisateurs hormis root quand ils modifient les actions qu&#039;on peut avoir sur eux. Certains attributs sont actuellement expérimentaux (octobre 2005) et nécessitent de patcher le noyau pour qu&#039;ils aient un effet réel. &lt;br /&gt;
&lt;br /&gt;
;append only (a), « ajouter seulement » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Protège le fichier contre la suppression de contenu : on ne peut que lui en ajouter. &lt;br /&gt;
;compressed (c), « compresser » ─ &#039;&#039;expérimental&#039;&#039;&lt;br /&gt;
:Le fichier est automatiquement compressé ─ si c&#039;est utile, et avec un format de compression le plus efficace ─ quand il est stocké. La décompression lors de la lecture et la compression des données ajoutées au fichier par la suite se font à la volée, de manière transparente pour l&#039;utilisateur (la commande &amp;lt;code&amp;gt;ls -l&amp;lt;/code&amp;gt;, par exemple, montre la taille décompressée). &lt;br /&gt;
:Cet attribut appliqué à un répertoire ne le compresse pas mais fait se compresser automatiquement tout nouveau fichier qu&#039;on y crée.&lt;br /&gt;
;no dump (d), « pas de sauvegarde »&lt;br /&gt;
:Un fichier ainsi marqué sera ignoré par la commande de sauvegarde &#039;&#039;dump&#039;&#039;.&lt;br /&gt;
;immutable (i), « immuable » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Protège le fichier contre toute modification (suppression, modification, déplacement, changements de permissions), même par root, et empêche qu&#039;on crée un lien vers lui. Seule la modification des attributs étendus est permise à son propriétaire et seul root peut enlever l&#039;attribut « immuable » d&#039;un fichier.&lt;br /&gt;
:Cet attribut est sans doute l&#039;un des plus intéressants.&lt;br /&gt;
;data journalling (j), « journalisation des données » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Cet attribut n&#039;est utile qu&#039;avec une partition en &#039;&#039;ext3&#039;&#039; montée avec les options de journalisation des données &amp;lt;code&amp;gt;data=ordered&amp;lt;/code&amp;gt; (montage par défaut) ou &amp;lt;code&amp;gt;data=writeback&amp;lt;/code&amp;gt; pour simuler une journalisation du type &amp;lt;code&amp;gt;data=journal&amp;lt;/code&amp;gt;, où les données sont écrites dans le journal avant de l&#039;être dans le fichier lui-même. Consulter &amp;lt;code&amp;gt;man mount 8&amp;lt;/code&amp;gt; pour plus de détails sur les mécanismes de journalisation d&#039;&#039;&#039;ext3&#039;&#039;. &lt;br /&gt;
:Sur une partition &#039;&#039;ext3&#039;&#039; en mode &amp;lt;code&amp;gt;data=journal&amp;lt;/code&amp;gt;, cet attribut est ignoré, de même que sur les partitions en &#039;&#039;ext2&#039;&#039; et &#039;&#039;reiserfs&#039;&#039;, le premier type n&#039;étant pas journalisé, le second l&#039;étant d&#039;une manière incompatible.&lt;br /&gt;
;secure deletion (s), « effacement sécurisé »  ─ &#039;&#039;expérimental&#039;&#039;&lt;br /&gt;
:Un fichier portant cet attribut est non seulement « effacé » mais en plus les blocs qu&#039;il occupait dans le système de fichiers sont recouverts de zéros pour éviter qu&#039;on puisse récupérer les données malgré l&#039;effacement. &lt;br /&gt;
:Normalement, effacer un fichier consiste seulement à détruire toute référence vers l&#039;espace occupé par les données de ce fichier dans la partition. Il n&#039;est cependant pas question de détruire physiquement les données elles-mêmes, sauf si le fichier possède cet attribut, auquel cas non seulement il n&#039;est plus accessible mais en plus tous ses bits sont réécrits.&lt;br /&gt;
;no tail-merging (t)&lt;br /&gt;
;undeletable (u), « ineffaçable » ─ &#039;&#039;&#039;expérimental&#039;&#039;&#039;&lt;br /&gt;
:Lors d&#039;un effacement, les références vers l&#039;espace du système de fichiers qui contient les données sont détruites, mais pas les données. Sans ces références, cependant, l&#039;espace anciennement réservé peut être utilisé par des fichiers nouvellement créés ou ayant été augmentés. Dans ce cas, il n&#039;est plus possible de récupérer les données en question. &lt;br /&gt;
:L&#039;attribut « ineffaçable » permet de préserver les blocs qui contenaient les données de façon à ce qu&#039;on puisse les récupérer si besoin est. L&#039;espace-disque n&#039;est donc pas libéré.&lt;br /&gt;
;no atime updates (A)&lt;br /&gt;
;synchronous directory updates (D)&lt;br /&gt;
;synchronous updates (S)&lt;br /&gt;
;top of directory hierarchy (T), « répertoire racine » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Cet attribut indique au répartiteur de blocs Orlov (ou &#039;&#039;[http://lwn.net/Articles/14633/ Orlov block allocator]&#039;&#039;, utilisé par le noyau Linux pour les systèmes de fichiers &#039;&#039;ext2&#039;&#039; et &#039;&#039;ext3&#039;&#039; depuis la version 2.5.46) que le répertoire concerné doit être considéré comme un répertoire racine de la hiérarchie des répertoires. &lt;br /&gt;
:L&#039;allocateur de blocs est un processus propre au système de fichier permettant de répartir les blocs de données des fichiers dans l&#039;espace disponible tout en garantissant une trop grande fragmentation. Pour cela, on place généralement dans un même groupe de cylindres du disque dur les blocs de fichiers dépendant d&#039;un  même répertoire. Dans le cas contraire, les données risquent d&#039;être éparpillées, voire fragmentées (les blocs d&#039;un même fichier sont alos répartis sur plusieurs cylindres non contigus). On ne peut cependant prévoir à l&#039;avance de quel espace aura besoin un répertoire. Il pourrait ne contenir que peu de fichiers ou, au contraire, une arborescence complète et chargée. Le répartiteur Orlov prend soin d&#039;éloigner le plus possible les uns des autres les répertoires racines, pour qu&#039;ils disposent d&#039;un espace où croître suffisant.&lt;br /&gt;
:Ajouter cet attribut à un répertoire permet au répartiteur de le traiter comme un répertoire racine, même s&#039;il n&#039;en est pas un. Il est donc utile avec des sous-arborescences de fichiers complexes et lourdes qui risqueraient d&#039;être fragmentées.&lt;br /&gt;
&lt;br /&gt;
==Commande==&lt;br /&gt;
lschattr, chattr&lt;br /&gt;
e2fsprogs&lt;br /&gt;
&amp;lt;!-- The  ‘c’,  ’s’,   and  ‘u’  attributes  are  not  honored by the ext2 and ext3 filesystems as implemented in the current mainline Linux kernels. These attributes may be implemented in future versions ext2 and ext3. The ‘j’ option is only useful if the filesystem is mounted as ext3. The ‘D’ option is only useful on Linux kernel 2.5.19 and later. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Copy|28.10.05|Vincent Ramos|FDL}}--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vincent Ramos</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Attributs_%C3%A9tendus&amp;diff=10118</id>
		<title>Attributs étendus</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Attributs_%C3%A9tendus&amp;diff=10118"/>
		<updated>2005-10-27T14:44:52Z</updated>

		<summary type="html">&lt;p&gt;Vincent Ramos : /* Types d&amp;#039;attributs */ mise en page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Les [[système de fichiers|systèmes de fichiers]] &#039;&#039;ext2&#039;&#039; et &#039;&#039;ext3&#039;&#039; (ainsi que &#039;&#039;reiserfs&#039;&#039; dans certaines conditions) offrent la possibilité de donner à des fichiers (fichiers réels ou répertoires) des &#039;&#039;&#039;attributs étendus&#039;&#039;&#039; qui s&#039;ajoutent aux [[permissions|permissions classiques POSIX.1]], éventuellement complétées par les [[ACL|permissions étendues ACL]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cadre type=&amp;quot;warning&amp;quot;&amp;gt;Seuls ces systèmes de fichiers offrant ces attributs, il n&#039;est pas prudent ─ en terme de sécurité ─ de s&#039;appuyer lourdement sur leur présence si l&#039;on est amené à transférer fréquemment des données d&#039;un système de fichiers &#039;&#039;ext&#039;&#039; à un autre. D&#039;autre part, il convient de tester ces possibilités : toutes les versions du noyau n&#039;en tiennent pas compte de la même manière.&amp;lt;/cadre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Mise en place==&lt;br /&gt;
Il n&#039;y a rien à faire pour des partitions en &#039;&#039;ext2&#039;&#039; ou &#039;&#039;ext3&#039;&#039;, qui respectent nativement les attributs étendus.&lt;br /&gt;
&lt;br /&gt;
Chose assez peu connue, cependant, le système de fichiers &#039;&#039;reiserfs&#039;&#039; peut respecter les attributs étendus, à condition d&#039;[[fstab|être monté]] avec l&#039;option idoine &amp;lt;code&amp;gt;attrs&amp;lt;/code&amp;gt;. Pour ce faire, les commandes suivantes sont appliquées : &lt;br /&gt;
* sur une partition non encore montée : &amp;lt;code&amp;gt;mount -t reiserfs -o attrs /dev/partition /point/de/montage&amp;lt;/code&amp;gt; ; &lt;br /&gt;
* sur une partition déjà montée : &amp;lt;code&amp;gt;mount -o attrs /point/de/montage&amp;lt;/code&amp;gt; (remontage à la volée).&lt;br /&gt;
&lt;br /&gt;
Pour que la prise en compte soit effective à chaque montage automatique (le cas échéant), il faut ajouter l&#039;option dans &#039;&#039;[[fstab|/etc/fstab]]&#039;&#039;. Par exemple : &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
/dev/hda1       /               reiserfs    defaults,acl,attrs 0       1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enfin, on peut recompiler son noyau avec l&#039;option &amp;lt;code&amp;gt;CONFIG_REISERFS_FS_XATTR = y&amp;lt;/code&amp;gt; pour que le mode &amp;lt;code&amp;gt;attr&amp;lt;/code&amp;gt; soit automatiquement appliqué lors du montage d&#039;une partition en &#039;&#039;reiserfs&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cadre type=&amp;quot;note&amp;quot;&amp;gt;Noter que des fichiers d&#039;une partition en &#039;&#039;reiserfs&#039;&#039; montée sans l&#039;option &amp;lt;code&amp;gt;attrs&amp;lt;/code&amp;gt; (ou la recompilation du noyau) peuvent recevoir des attributs étendus : ils seront bien enregistrés mais n&#039;auront aucun effet. La commande de modification d&#039;attributs, &#039;&#039;chattr&#039;&#039;, ne renverra donc aucun message d&#039;erreur sans pour autant que les attributs soient pris en compte. Ce détail peut avoir des répercussion pour la sécurité du système : on peut, à tort, croire protéger des fichiers.&amp;lt;/cadre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Types d&#039;attributs==&lt;br /&gt;
Selon la norme POSIX.1, tout fichier possède les permissions en lecture, écriture et exécution. On peut leur adjoindre des attributs supplémentaires, qui s&#039;imposent à tous les utilisateurs hormis root quand ils modifient les actions qu&#039;on peut avoir sur eux. Certains attributs sont actuellement expérimentaux (octobre 2005) et nécessitent de patcher le noyau pour qu&#039;ils aient un effet réel. &lt;br /&gt;
&lt;br /&gt;
;append only (a), « ajouter seulement » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Protège le fichier contre la suppression de contenu : on ne peut que lui en ajouter. &lt;br /&gt;
;compressed (c), « compresser » ─ &#039;&#039;expérimental&#039;&#039;&lt;br /&gt;
:Le fichier est automatiquement compressé ─ si c&#039;est utile, et avec un format de compression le plus efficace ─ quand il est stocké. La décompression lors de la lecture et la compression des données ajoutées au fichier par la suite se font à la volée, de manière transparente pour l&#039;utilisateur (la commande &amp;lt;code&amp;gt;ls -l&amp;lt;/code&amp;gt;, par exemple, montre la taille décompressée). &lt;br /&gt;
:Cet attribut appliqué à un répertoire ne le compresse pas mais fait se compresser automatiquement tout nouveau fichier qu&#039;on y crée.&lt;br /&gt;
;no dump (d), « pas de sauvegarde »&lt;br /&gt;
:Un fichier ainsi marqué sera ignoré par la commande de sauvegarde &#039;&#039;dump&#039;&#039;.&lt;br /&gt;
;immutable (i), « immuable » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Protège le fichier contre toute modification (suppression, modification, déplacement, changements de permissions), même par root, et empêche qu&#039;on crée un lien vers lui. Seule la modification des attributs étendus est permise à son propriétaire et seul root peut enlever l&#039;attribut « immuable » d&#039;un fichier.&lt;br /&gt;
:Cet attribut est sans doute l&#039;un des plus intéressants.&lt;br /&gt;
;data journalling (j), « journalisation des données » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Cet attribut n&#039;est utile qu&#039;avec une partition en &#039;&#039;ext3&#039;&#039; montée avec les options de journalisation des données &amp;lt;code&amp;gt;data=ordered&amp;lt;/code&amp;gt; (montage par défaut) ou &amp;lt;code&amp;gt;data=writeback&amp;lt;/code&amp;gt; pour simuler une journalisation du type &amp;lt;code&amp;gt;data=journal&amp;lt;/code&amp;gt;, où les données sont écrites dans le journal avant de l&#039;être dans le fichier lui-même. Consulter &amp;lt;code&amp;gt;man mount 8&amp;lt;/code&amp;gt; pour plus de détails sur les mécanismes de journalisation d&#039;&#039;&#039;ext3&#039;&#039;. &lt;br /&gt;
:Sur une partition &#039;&#039;ext3&#039;&#039; en mode &amp;lt;code&amp;gt;data=journal&amp;lt;/code&amp;gt;, cet attribut est ignoré, de même que sur les partitions en &#039;&#039;ext2&#039;&#039; et &#039;&#039;reiserfs&#039;&#039;, le premier type n&#039;étant pas journalisé, le second l&#039;étant d&#039;une manière incompatible.&lt;br /&gt;
;secure deletion (s), « effacement sécurisé »  ─ &#039;&#039;expérimental&#039;&#039;&lt;br /&gt;
:Un fichier portant cet attribut est non seulement « effacé » mais en plus les blocs qu&#039;il occupait dans le système de fichiers sont recouverts de zéros pour éviter qu&#039;on puisse récupérer les données malgré l&#039;effacement. &lt;br /&gt;
:Normalement, effacer un fichier consiste seulement à détruire toute référence vers l&#039;espace occupé par les données de ce fichier dans la partition. Il n&#039;est cependant pas question de détruire physiquement les données elles-mêmes, sauf si le fichier possède cet attribut, auquel cas non seulement il n&#039;est plus accessible mais en plus tous ses bits sont réécrits.&lt;br /&gt;
;no tail-merging (t)&lt;br /&gt;
;undeletable (u), « ineffaçable » ─ &#039;&#039;&#039;expérimental&#039;&#039;&#039;&lt;br /&gt;
:Lors d&#039;un effacement, les références vers l&#039;espace du système de fichiers qui contient les données sont détruites, mais pas les données. Sans ces références, cependant, l&#039;espace anciennement réservé peut être utilisé par des fichiers nouvellement créés ou ayant été augmentés. Dans ce cas, il n&#039;est plus possible de récupérer les données en question. &lt;br /&gt;
:L&#039;attribut « ineffaçable » permet de préserver les blocs qui contenaient les données de façon à ce qu&#039;on puisse les récupérer si besoin est. L&#039;espace-disque n&#039;est donc pas libéré.&lt;br /&gt;
;no atime updates (A)&lt;br /&gt;
;synchronous directory updates (D)&lt;br /&gt;
;synchronous updates (S)&lt;br /&gt;
;top of directory hierarchy (T), « répertoire racine ».&lt;br /&gt;
:Cet attribut indique au répartiteur de blocs Orlov (ou &#039;&#039;[http://lwn.net/Articles/14633/ Orlov block allocator]&#039;&#039;, utilisé par le noyau Linux pour les systèmes de fichiers &#039;&#039;ext2&#039;&#039; et &#039;&#039;ext3&#039;&#039; depuis la version 2.5.46) que le répertoire concerné est à la racine de la hiérarchie des répertoires. &lt;br /&gt;
:L&#039;allocateur de blocs est un processus propre au système de fichier permettant de répartir les blocs de données des fichiers dans l&#039;espace disponible tout en garantissant une trop grande fragmentation. Pour cela, on place généralement dans un même groupe de cylindres du disque dur les blocs de fichiers dépendant d&#039;un  même répertoire. Dans le cas contraire, les données risquent d&#039;être éparpillées, voire fragmentées (les blocs d&#039;un même fichier sont alos répartis sur plusieurs cylindres non contigus). On ne peut cependant prévoir à l&#039;avance de quel espace aura besoin un répertoire. Il pourrait ne contenir que peu de fichiers ou, au contraire, une arborescence complète et chargée. Le répartiteur Orlov prend soin d&#039;éloigner le plus possible les uns des autres les répertoires racines, pour qu&#039;ils disposent d&#039;un espace où croître suffisant.&lt;br /&gt;
:Ajouter cet attribut à un répertoire permet au répartiteur de le traiter comme un répertoire racine, même s&#039;il n&#039;en est pas un. Il est donc utile avec des sous-arborescences de fichiers complexes et lourdes qui risqueraient d&#039;être fragmentées.&lt;br /&gt;
&lt;br /&gt;
==Commande==&lt;br /&gt;
lschattr, chattr&lt;br /&gt;
e2fsprogs&lt;br /&gt;
&amp;lt;!-- The  ‘c’,  ’s’,   and  ‘u’  attributes  are  not  honored by the ext2 and ext3 filesystems as implemented in the current mainline Linux kernels. These attributes may be implemented in future versions ext2 and ext3. The ‘j’ option is only useful if the filesystem is mounted as ext3. The ‘D’ option is only useful on Linux kernel 2.5.19 and later. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Copy|28.10.05|Vincent Ramos|FDL}}--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vincent Ramos</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Attributs_%C3%A9tendus&amp;diff=10117</id>
		<title>Attributs étendus</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Attributs_%C3%A9tendus&amp;diff=10117"/>
		<updated>2005-10-27T14:43:12Z</updated>

		<summary type="html">&lt;p&gt;Vincent Ramos : /* Types d&amp;#039;attributs */ Suite&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Les [[système de fichiers|systèmes de fichiers]] &#039;&#039;ext2&#039;&#039; et &#039;&#039;ext3&#039;&#039; (ainsi que &#039;&#039;reiserfs&#039;&#039; dans certaines conditions) offrent la possibilité de donner à des fichiers (fichiers réels ou répertoires) des &#039;&#039;&#039;attributs étendus&#039;&#039;&#039; qui s&#039;ajoutent aux [[permissions|permissions classiques POSIX.1]], éventuellement complétées par les [[ACL|permissions étendues ACL]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cadre type=&amp;quot;warning&amp;quot;&amp;gt;Seuls ces systèmes de fichiers offrant ces attributs, il n&#039;est pas prudent ─ en terme de sécurité ─ de s&#039;appuyer lourdement sur leur présence si l&#039;on est amené à transférer fréquemment des données d&#039;un système de fichiers &#039;&#039;ext&#039;&#039; à un autre. D&#039;autre part, il convient de tester ces possibilités : toutes les versions du noyau n&#039;en tiennent pas compte de la même manière.&amp;lt;/cadre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Mise en place==&lt;br /&gt;
Il n&#039;y a rien à faire pour des partitions en &#039;&#039;ext2&#039;&#039; ou &#039;&#039;ext3&#039;&#039;, qui respectent nativement les attributs étendus.&lt;br /&gt;
&lt;br /&gt;
Chose assez peu connue, cependant, le système de fichiers &#039;&#039;reiserfs&#039;&#039; peut respecter les attributs étendus, à condition d&#039;[[fstab|être monté]] avec l&#039;option idoine &amp;lt;code&amp;gt;attrs&amp;lt;/code&amp;gt;. Pour ce faire, les commandes suivantes sont appliquées : &lt;br /&gt;
* sur une partition non encore montée : &amp;lt;code&amp;gt;mount -t reiserfs -o attrs /dev/partition /point/de/montage&amp;lt;/code&amp;gt; ; &lt;br /&gt;
* sur une partition déjà montée : &amp;lt;code&amp;gt;mount -o attrs /point/de/montage&amp;lt;/code&amp;gt; (remontage à la volée).&lt;br /&gt;
&lt;br /&gt;
Pour que la prise en compte soit effective à chaque montage automatique (le cas échéant), il faut ajouter l&#039;option dans &#039;&#039;[[fstab|/etc/fstab]]&#039;&#039;. Par exemple : &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
/dev/hda1       /               reiserfs    defaults,acl,attrs 0       1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enfin, on peut recompiler son noyau avec l&#039;option &amp;lt;code&amp;gt;CONFIG_REISERFS_FS_XATTR = y&amp;lt;/code&amp;gt; pour que le mode &amp;lt;code&amp;gt;attr&amp;lt;/code&amp;gt; soit automatiquement appliqué lors du montage d&#039;une partition en &#039;&#039;reiserfs&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cadre type=&amp;quot;note&amp;quot;&amp;gt;Noter que des fichiers d&#039;une partition en &#039;&#039;reiserfs&#039;&#039; montée sans l&#039;option &amp;lt;code&amp;gt;attrs&amp;lt;/code&amp;gt; (ou la recompilation du noyau) peuvent recevoir des attributs étendus : ils seront bien enregistrés mais n&#039;auront aucun effet. La commande de modification d&#039;attributs, &#039;&#039;chattr&#039;&#039;, ne renverra donc aucun message d&#039;erreur sans pour autant que les attributs soient pris en compte. Ce détail peut avoir des répercussion pour la sécurité du système : on peut, à tort, croire protéger des fichiers.&amp;lt;/cadre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Types d&#039;attributs==&lt;br /&gt;
Selon la norme POSIX.1, tout fichier possède les permissions en lecture, écriture et exécution. On peut leur adjoindre des attributs supplémentaires, qui s&#039;imposent à tous les utilisateurs hormis root quand ils modifient les actions qu&#039;on peut avoir sur eux. Certains attributs sont actuellement expérimentaux (octobre 2005) et nécessitent de patcher le noyau pour qu&#039;ils aient un effet réel. &lt;br /&gt;
&lt;br /&gt;
;append only (a), « ajouter seulement » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Protège le fichier contre la suppression de contenu : on ne peut que lui en ajouter. &lt;br /&gt;
;compressed (c), « compresser » ─ &#039;&#039;expérimental&#039;&#039;&lt;br /&gt;
:Le fichier est automatiquement compressé ─ si c&#039;est utile, et avec un format de compression le plus efficace ─ quand il est stocké. La décompression lors de la lecture et la compression des données ajoutées au fichier par la suite se font à la volée, de manière transparente pour l&#039;utilisateur (la commande &amp;lt;code&amp;gt;ls -l&amp;lt;/code&amp;gt;, par exemple, montre la taille décompressée). &lt;br /&gt;
:Cet attribut appliqué à un répertoire ne le compresse pas mais fait se compresser automatiquement tout nouveau fichier qu&#039;on y crée.&lt;br /&gt;
;no dump (d), « pas de sauvegarde »&lt;br /&gt;
:Un fichier ainsi marqué sera ignoré par la commande de sauvegarde &#039;&#039;dump&#039;&#039;.&lt;br /&gt;
;immutable (i), « immuable » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Protège le fichier contre toute modification (suppression, modification, déplacement, changements de permissions), même par root, et empêche qu&#039;on crée un lien vers lui. Seule la modification des attributs étendus est permise à son propriétaire et seul root peut enlever l&#039;attribut « immuable » d&#039;un fichier.&lt;br /&gt;
:Cet attribut est sans doute l&#039;un des plus intéressants.&lt;br /&gt;
;data journalling (j), « journalisation des données » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Cet attribut n&#039;est utile qu&#039;avec une partition en &#039;&#039;ext3&#039;&#039; montée avec les options de journalisation des données &amp;lt;code&amp;gt;data=ordered&amp;lt;/code&amp;gt; (montage par défaut) ou &amp;lt;code&amp;gt;data=writeback&amp;lt;/code&amp;gt; pour simuler une journalisation du type &amp;lt;code&amp;gt;data=journal&amp;lt;/code&amp;gt;, où les données sont écrites dans le journal avant de l&#039;être dans le fichier lui-même. Consulter &amp;lt;code&amp;gt;man mount 8&amp;lt;/code&amp;gt; pour plus de détails sur les mécanismes de journalisation d&#039;&#039;&#039;ext3&#039;&#039;. &lt;br /&gt;
:Sur une partition &#039;&#039;ext3&#039;&#039; en mode &amp;lt;code&amp;gt;data=journal&amp;lt;/code&amp;gt;, cet attribut est ignoré, de même que sur les partitions en &#039;&#039;ext2&#039;&#039; et &#039;&#039;reiserfs&#039;&#039;, le premier type n&#039;étant pas journalisé, le second l&#039;étant d&#039;une manière incompatible.&lt;br /&gt;
;secure deletion (s), « effacement sécurisé »  ─ &#039;&#039;expérimental&#039;&#039;&lt;br /&gt;
:Un fichier portant cet attribut est non seulement « effacé » mais en plus les blocs qu&#039;il occupait dans le système de fichiers sont recouverts de zéros pour éviter qu&#039;on puisse récupérer les données malgré l&#039;effacement. &lt;br /&gt;
:Normalement, effacer un fichier consiste seulement à détruire toute référence vers l&#039;espace occupé par les données de ce fichier dans la partition. Il n&#039;est cependant pas question de détruire physiquement les données elles-mêmes, sauf si le fichier possède cet attribut, auquel cas non seulement il n&#039;est plus accessible mais en plus tous ses bits sont réécrits.&lt;br /&gt;
;no tail-merging (t)&lt;br /&gt;
;undeletable (u), « ineffaçable » ─ &#039;&#039;&#039;expérimental&#039;&#039;&#039;&lt;br /&gt;
Lors d&#039;un effacement, les références vers l&#039;espace du système de fichiers qui contient les données sont détruites, mais pas les données. Sans ces références, cependant, l&#039;espace anciennement réservé peut être utilisé par des fichiers nouvellement créés ou ayant été augmentés. Dans ce cas, il n&#039;est plus possible de récupérer les données en question. &lt;br /&gt;
:L&#039;attribut « ineffaçable » permet de préserver les blocs qui contenaient les données de façon à ce qu&#039;on puisse les récupérer si besoin est. L&#039;espace-disque n&#039;est donc pas libéré.&lt;br /&gt;
;no atime updates (A)&lt;br /&gt;
;synchronous directory updates (D)&lt;br /&gt;
;synchronous updates (S)&lt;br /&gt;
;top of directory hierarchy (T), « répertoire racine ».&lt;br /&gt;
:Cet attribut indique au répartiteur de blocs Orlov (ou &#039;&#039;[http://lwn.net/Articles/14633/ Orlov block allocator]&#039;&#039;, utilisé par le noyau Linux pour les systèmes de fichiers &#039;&#039;ext2&#039;&#039; et &#039;&#039;ext3&#039;&#039; depuis la version 2.5.46) que le répertoire concerné est à la racine de la hiérarchie des répertoires. &lt;br /&gt;
:L&#039;allocateur de blocs est un processus propre au système de fichier permettant de répartir les blocs de données des fichiers dans l&#039;espace disponible tout en garantissant une trop grande fragmentation. Pour cela, on place généralement dans un même groupe de cylindres du disque dur les blocs de fichiers dépendant d&#039;un  même répertoire. Dans le cas contraire, les données risquent d&#039;être éparpillées, voire fragmentées (les blocs d&#039;un même fichier sont alos répartis sur plusieurs cylindres non contigus). On ne peut cependant prévoir à l&#039;avance de quel espace aura besoin un répertoire. Il pourrait ne contenir que peu de fichiers ou, au contraire, une arborescence complète et chargée. Le répartiteur Orlov prend soin d&#039;éloigner le plus possible les uns des autres les répertoires racines, pour qu&#039;ils disposent d&#039;un espace où croître suffisant.&lt;br /&gt;
:Ajouter cet attribut à un répertoire permet au répartiteur de le traiter comme un répertoire racine, même s&#039;il n&#039;en est pas un. Il est donc utile avec des sous-arborescences de fichiers complexes et lourdes qui risqueraient d&#039;être fragmentées.&lt;br /&gt;
&lt;br /&gt;
==Commande==&lt;br /&gt;
lschattr, chattr&lt;br /&gt;
e2fsprogs&lt;br /&gt;
&amp;lt;!-- The  ‘c’,  ’s’,   and  ‘u’  attributes  are  not  honored by the ext2 and ext3 filesystems as implemented in the current mainline Linux kernels. These attributes may be implemented in future versions ext2 and ext3. The ‘j’ option is only useful if the filesystem is mounted as ext3. The ‘D’ option is only useful on Linux kernel 2.5.19 and later. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Copy|28.10.05|Vincent Ramos|FDL}}--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vincent Ramos</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Gestion_des_ACL&amp;diff=10116</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=10116"/>
		<updated>2005-10-27T14:09:18Z</updated>

		<summary type="html">&lt;p&gt;Vincent Ramos : retouches&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 -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 -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 fichier &#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.suse.de/~agruen/acl/linux-acls/online/ POSIX Access Control Lists on Linux].&lt;br /&gt;
&lt;br /&gt;
{{Copy|27.10.05|Vincent Ramos|FDL}}&lt;/div&gt;</summary>
		<author><name>Vincent Ramos</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Attributs_%C3%A9tendus&amp;diff=10114</id>
		<title>Attributs étendus</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Attributs_%C3%A9tendus&amp;diff=10114"/>
		<updated>2005-10-27T14:01:08Z</updated>

		<summary type="html">&lt;p&gt;Vincent Ramos : /* Types d&amp;#039;attributs */ Suite&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Les [[système de fichiers|systèmes de fichiers]] &#039;&#039;ext2&#039;&#039; et &#039;&#039;ext3&#039;&#039; (ainsi que &#039;&#039;reiserfs&#039;&#039; dans certaines conditions) offrent la possibilité de donner à des fichiers (fichiers réels ou répertoires) des &#039;&#039;&#039;attributs étendus&#039;&#039;&#039; qui s&#039;ajoutent aux [[permissions|permissions classiques POSIX.1]], éventuellement complétées par les [[ACL|permissions étendues ACL]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cadre type=&amp;quot;warning&amp;quot;&amp;gt;Seuls ces systèmes de fichiers offrant ces attributs, il n&#039;est pas prudent ─ en terme de sécurité ─ de s&#039;appuyer lourdement sur leur présence si l&#039;on est amené à transférer fréquemment des données d&#039;un système de fichiers &#039;&#039;ext&#039;&#039; à un autre. D&#039;autre part, il convient de tester ces possibilités : toutes les versions du noyau n&#039;en tiennent pas compte de la même manière.&amp;lt;/cadre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Mise en place==&lt;br /&gt;
Il n&#039;y a rien à faire pour des partitions en &#039;&#039;ext2&#039;&#039; ou &#039;&#039;ext3&#039;&#039;, qui respectent nativement les attributs étendus.&lt;br /&gt;
&lt;br /&gt;
Chose assez peu connue, cependant, le système de fichiers &#039;&#039;reiserfs&#039;&#039; peut respecter les attributs étendus, à condition d&#039;[[fstab|être monté]] avec l&#039;option idoine &amp;lt;code&amp;gt;attrs&amp;lt;/code&amp;gt;. Pour ce faire, les commandes suivantes sont appliquées : &lt;br /&gt;
* sur une partition non encore montée : &amp;lt;code&amp;gt;mount -t reiserfs -o attrs /dev/partition /point/de/montage&amp;lt;/code&amp;gt; ; &lt;br /&gt;
* sur une partition déjà montée : &amp;lt;code&amp;gt;mount -o attrs /point/de/montage&amp;lt;/code&amp;gt; (remontage à la volée).&lt;br /&gt;
&lt;br /&gt;
Pour que la prise en compte soit effective à chaque montage automatique (le cas échéant), il faut ajouter l&#039;option dans &#039;&#039;[[fstab|/etc/fstab]]&#039;&#039;. Par exemple : &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
/dev/hda1       /               reiserfs    defaults,acl,attrs 0       1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enfin, on peut recompiler son noyau avec l&#039;option &amp;lt;code&amp;gt;CONFIG_REISERFS_FS_XATTR = y&amp;lt;/code&amp;gt; pour que le mode &amp;lt;code&amp;gt;attr&amp;lt;/code&amp;gt; soit automatiquement appliqué lors du montage d&#039;une partition en &#039;&#039;reiserfs&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cadre type=&amp;quot;note&amp;quot;&amp;gt;Noter que des fichiers d&#039;une partition en &#039;&#039;reiserfs&#039;&#039; montée sans l&#039;option &amp;lt;code&amp;gt;attrs&amp;lt;/code&amp;gt; (ou la recompilation du noyau) peuvent recevoir des attributs étendus : ils seront bien enregistrés mais n&#039;auront aucun effet. La commande de modification d&#039;attributs, &#039;&#039;chattr&#039;&#039;, ne renverra donc aucun message d&#039;erreur sans pour autant que les attributs soient pris en compte. Ce détail peut avoir des répercussion pour la sécurité du système : on peut, à tort, croire protéger des fichiers.&amp;lt;/cadre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Types d&#039;attributs==&lt;br /&gt;
Selon la norme POSIX.1, tout fichier possède les permissions en lecture, écriture et exécution. On peut leur adjoindre des attributs supplémentaires, qui s&#039;imposent à tous les utilisateurs hormis root quand ils modifient les actions qu&#039;on peut avoir sur eux. Certains attributs sont actuellement expérimentaux (octobre 2005) et nécessitent de patcher le noyau pour qu&#039;ils aient un effet réel. &lt;br /&gt;
&lt;br /&gt;
;append only (a), « ajouter seulement » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Protège le fichier contre la suppression de contenu : on ne peut que lui en ajouter. &lt;br /&gt;
;compressed (c), « compresser » ─ &#039;&#039;expérimental&#039;&#039;&lt;br /&gt;
:Le fichier est automatiquement compressé ─ si c&#039;est utile, et avec un format de compression le plus efficace ─ quand il est stocké. La décompression lors de la lecture et la compression des données ajoutées au fichier par la suite se font à la volée, de manière transparente pour l&#039;utilisateur (la commande &amp;lt;code&amp;gt;ls -l&amp;lt;/code&amp;gt;, par exemple, montre la taille décompressée). &lt;br /&gt;
:Cet attribut appliqué à un répertoire ne le compresse pas mais fait se compresser automatiquement tout nouveau fichier qu&#039;on y crée.&lt;br /&gt;
;no dump (d), « pas de sauvegarde »&lt;br /&gt;
:Un fichier ainsi marqué sera ignoré par la commande de sauvegarde &#039;&#039;dump&#039;&#039;.&lt;br /&gt;
;immutable (i), « immuable » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Protège le fichier contre toute modification (suppression, modification, déplacement, changements de permissions), même par root, et empêche qu&#039;on crée un lien vers lui. Seule la modification des attributs étendus est permise à son propriétaire et seul root peut enlever l&#039;attribut « immuable » d&#039;un fichier.&lt;br /&gt;
:Cet attribut est sans doute l&#039;un des plus intéressants.&lt;br /&gt;
;data journalling (j), « journalisation des données » ─ &#039;&#039;réservé à root&#039;&#039;&lt;br /&gt;
:Cet attribut n&#039;est utile qu&#039;avec une partition en &#039;&#039;ext3&#039;&#039; montée avec les options de journalisation des données &amp;lt;code&amp;gt;data=ordered&amp;lt;/code&amp;gt; (montage par défaut) ou &amp;lt;code&amp;gt;data=writeback&amp;lt;/code&amp;gt; pour simuler une journalisation du type &amp;lt;code&amp;gt;data=journal&amp;lt;/code&amp;gt;, où les données sont écrites dans le journal avant de l&#039;être dans le fichier lui-même. Consulter &amp;lt;code&amp;gt;man mount 8&amp;lt;/code&amp;gt; pour plus de détails sur les mécanismes de journalisation d&#039;&#039;&#039;ext3&#039;&#039;. &lt;br /&gt;
:Sur une partition &#039;&#039;ext3&#039;&#039; en mode &amp;lt;code&amp;gt;data=journal&amp;lt;/code&amp;gt;, cet attribut est ignoré, de même que sur les partitions en &#039;&#039;ext2&#039;&#039; et &#039;&#039;reiserfs&#039;&#039;, le premier type n&#039;étant pas journalisé, le second l&#039;étant d&#039;une manière incompatible.&lt;br /&gt;
;secure deletion (s), « effacement sécurisé »  ─ &#039;&#039;expérimental&#039;&#039;&lt;br /&gt;
:Un fichier portant cet attribut est non seulement « effacé » mais en plus les blocs qu&#039;il occupait dans le système de fichiers sont recouverts de zéros pour éviter qu&#039;on puisse récupérer les données malgré l&#039;effacement. &lt;br /&gt;
:Normalement, effacer un fichier consiste seulement à détruire toute référence vers l&#039;espace occupé par les données de ce fichier dans la partition. Il n&#039;est cependant pas question de détruire physiquement les données elles-mêmes, sauf si le fichier possède cet attribut, auquel cas non seulement il n&#039;est plus accessible mais en plus tous ses bits sont réécrits.&lt;br /&gt;
&lt;br /&gt;
;no tail-merging (t)&lt;br /&gt;
;undeletable (u) ─ &#039;&#039;&#039;experimental&#039;&#039;&#039;&lt;br /&gt;
;no atime updates (A)&lt;br /&gt;
;synchronous directory updates (D)&lt;br /&gt;
;synchronous updates (S)&lt;br /&gt;
;top of directory hierarchy (T).&lt;br /&gt;
&lt;br /&gt;
==Commande==&lt;br /&gt;
lschattr, chattr&lt;br /&gt;
e2fsprogs&lt;br /&gt;
&amp;lt;!-- The  ‘c’,  ’s’,   and  ‘u’  attributes  are  not  honored by the ext2 and ext3 filesystems as implemented in the current mainline Linux kernels. These attributes may be implemented in future versions ext2 and ext3. The ‘j’ option is only useful if the filesystem is mounted as ext3. The ‘D’ option is only useful on Linux kernel 2.5.19 and later. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Copy|28.10.05|Vincent Ramos|FDL}}--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vincent Ramos</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Attributs_%C3%A9tendus&amp;diff=10109</id>
		<title>Attributs étendus</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Attributs_%C3%A9tendus&amp;diff=10109"/>
		<updated>2005-10-27T10:08:30Z</updated>

		<summary type="html">&lt;p&gt;Vincent Ramos : /* Mise en place */ - agressif&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Les [[système de fichiers|systèmes de fichiers]] &#039;&#039;ext2&#039;&#039; et &#039;&#039;ext3&#039;&#039; (ainsi que &#039;&#039;reiserfs&#039;&#039; dans certaines conditions) offrent la possibilité de donner à des fichiers (fichiers réels ou répertoires) des &#039;&#039;&#039;attributs étendus&#039;&#039;&#039; qui s&#039;ajoutent aux [[permissions|permissions classiques POSIX.1]], éventuellement complétées par les [[ACL|permissions étendues ACL]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cadre type=&amp;quot;warning&amp;quot;&amp;gt;Seuls ces systèmes de fichiers offrant ces attributs, il n&#039;est pas prudent ─ en terme de sécurité ─ de s&#039;appuyer lourdement sur leur présence si l&#039;on est amené à transférer fréquemment des données d&#039;un système de fichiers &#039;&#039;ext&#039;&#039; à un autre. D&#039;autre part, il convient de tester ces possibilités : toutes les versions du noyau n&#039;en tiennent pas compte de la même manière.&amp;lt;/cadre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Mise en place==&lt;br /&gt;
Il n&#039;y a rien à faire pour des partitions en &#039;&#039;ext2&#039;&#039; ou &#039;&#039;ext3&#039;&#039;, qui respectent nativement les attributs étendus.&lt;br /&gt;
&lt;br /&gt;
Chose assez peu connue, cependant, le système de fichiers &#039;&#039;reiserfs&#039;&#039; peut respecter les attributs étendus, à condition d&#039;[[fstab|être monté]] avec l&#039;option idoine &amp;lt;code&amp;gt;attrs&amp;lt;/code&amp;gt;. Pour ce faire, les commandes suivantes sont appliquées : &lt;br /&gt;
* sur une partition non encore montée : &amp;lt;code&amp;gt;mount -t reiserfs -o attrs /dev/partition /point/de/montage&amp;lt;/code&amp;gt; ; &lt;br /&gt;
* sur une partition déjà montée : &amp;lt;code&amp;gt;mount -o attrs /point/de/montage&amp;lt;/code&amp;gt; (remontage à la volée).&lt;br /&gt;
&lt;br /&gt;
Pour que la prise en compte soit effective à chaque montage automatique (le cas échéant), il faut ajouter l&#039;option dans &#039;&#039;[[fstab|/etc/fstab]]&#039;&#039;. Par exemple : &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
/dev/hda1       /               reiserfs    defaults,acl,attrs 0       1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enfin, on peut recompiler son noyau avec l&#039;option &amp;lt;code&amp;gt;CONFIG_REISERFS_FS_XATTR = y&amp;lt;/code&amp;gt; pour que le mode &amp;lt;code&amp;gt;attr&amp;lt;/code&amp;gt; soit automatiquement appliqué lors du montage d&#039;une partition en &#039;&#039;reiserfs&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cadre type=&amp;quot;note&amp;quot;&amp;gt;Noter que des fichiers d&#039;une partition en &#039;&#039;reiserfs&#039;&#039; montée sans l&#039;option &amp;lt;code&amp;gt;attrs&amp;lt;/code&amp;gt; (ou la recompilation du noyau) peuvent recevoir des attributs étendus : ils seront bien enregistrés mais n&#039;auront aucun effet. La commande de modification d&#039;attributs, &#039;&#039;chattr&#039;&#039;, ne renverra donc aucun message d&#039;erreur sans pour autant que les attributs soient pris en compte. Ce détail peut avoir des répercussion pour la sécurité du système : on peut, à tort, croire protéger des fichiers.&amp;lt;/cadre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Types d&#039;attributs==&lt;br /&gt;
Selon la norme POSIX.1, tout fichier possède les permissions en lecture, écriture et exécution. On peut leur adjoindre des attributs supplémentaires, qui s&#039;imposent à tous les utilisateurs hormis root quand ils modifient les actions qu&#039;on peut avoir sur eux. Certains attributs sont actuellement expérimentaux (octobre 2005) et nécessitent de patcher le noyau pour qu&#039;ils aient un effet réel. &lt;br /&gt;
&lt;br /&gt;
;append only (a), « ajouter seulement » ─ &#039;&#039;&#039;réservé à root&#039;&#039;&#039;&lt;br /&gt;
:Protège le fichier contre la suppression de contenu : on ne peut que lui en ajouter. &lt;br /&gt;
;compressed (c), « compresser » ─ &#039;&#039;&#039;expérimental&#039;&#039;&#039;&lt;br /&gt;
:Le fichier est automatiquement compressé ─ si c&#039;est utile, et avec un format de compression le plus efficace ─ quand il est stocké. La décompression lors de la lecture et la compression des données ajoutées au fichier par la suite se font à la volée, de manière transparente pour l&#039;utilisateur (la commande &amp;lt;code&amp;gt;ls -l&amp;lt;/code&amp;gt;, par exemple, montre la taille décompressée). &lt;br /&gt;
:Cet attribut appliqué à un répertoire ne le compresse pas mais fait se compresser automatiquement tout nouveau fichier qu&#039;on y crée.&lt;br /&gt;
;no dump (d), « pas de sauvegarde »&lt;br /&gt;
:Un fichier ainsi marqué sera ignoré par la commande &#039;&#039;dump&#039;&#039;.&lt;br /&gt;
;immutable (i), « immuable » ─ &#039;&#039;&#039;réservé à root&#039;&#039;&#039;&lt;br /&gt;
:Protège le fichier contre toute modification (suppression, modification, déplacement, changements de permissions), même par root, et empêche qu&#039;on crée un lien vers lui. Seule la modification des attributs étendus est permise à son propriétaire et seul root peut enlever l&#039;attribut « immuable » d&#039;un fichier.&lt;br /&gt;
:Cet attribut est sans doute l&#039;un des plus intéressants.&lt;br /&gt;
;data journalling (j), « journalisation des données » ─ &#039;&#039;&#039;réservé à root&#039;&#039;&#039;&lt;br /&gt;
:Cet attribut n&#039;est utile qu&#039;avec une partition en &#039;&#039;ext3&#039;&#039; montée avec les options de journalisation des données &amp;lt;code&amp;gt;data=ordered&amp;lt;/code&amp;gt; (montage par défaut) ou &amp;lt;code&amp;gt;data=writeback&amp;lt;/code&amp;gt; pour simuler une journalisation du type &amp;lt;code&amp;gt;data=journal&amp;lt;/code&amp;gt;, où les données sont écrites dans le journal avant de l&#039;être dans le fichier lui-même. Consulter &amp;lt;code&amp;gt;man mount 8&amp;lt;/code&amp;gt; pour plus de détails sur les mécanismes de journalisation d&#039;&#039;&#039;ext3&#039;&#039;. &lt;br /&gt;
:Sur une partition &#039;&#039;ext3&#039;&#039; en mode &amp;lt;code&amp;gt;data=journal&amp;lt;/code&amp;gt;, cet attribut est ignoré, de même que sur les partitions en &#039;&#039;ext2&#039;&#039; et &#039;&#039;reiserfs&#039;&#039;, le premier type n&#039;étant pas journalisé, le second l&#039;étant d&#039;une manière incompatible.&lt;br /&gt;
;secure deletion (s), « effacement sécurisé »  ─ &#039;&#039;&#039;expérimental&#039;&#039;&#039;&lt;br /&gt;
:&lt;br /&gt;
;no tail-merging (t)&lt;br /&gt;
;undeletable (u) ─ &#039;&#039;&#039;experimental&#039;&#039;&#039;&lt;br /&gt;
;no atime updates (A)&lt;br /&gt;
;synchronous directory updates (D)&lt;br /&gt;
;synchronous updates (S)&lt;br /&gt;
;top of directory hierarchy (T).&lt;br /&gt;
&lt;br /&gt;
==Commande==&lt;br /&gt;
lschattr, chattr&lt;br /&gt;
e2fsprogs&lt;br /&gt;
&amp;lt;!-- The  ‘c’,  ’s’,   and  ‘u’  attributes  are  not  honored by the ext2 and ext3 filesystems as implemented in the current mainline Linux kernels. These attributes may be implemented in future versions ext2 and ext3. The ‘j’ option is only useful if the filesystem is mounted as ext3. The ‘D’ option is only useful on Linux kernel 2.5.19 and later. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Copy|28.10.05|Vincent Ramos|FDL}}--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vincent Ramos</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Lea_Linux:Rapport_d%27erreurs&amp;diff=10106</id>
		<title>Lea Linux:Rapport d&#039;erreurs</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Lea_Linux:Rapport_d%27erreurs&amp;diff=10106"/>
		<updated>2005-10-27T09:50:41Z</updated>

		<summary type="html">&lt;p&gt;Vincent Ramos : /* Aide et cache */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Bogues ==&lt;br /&gt;
* [[Lea_Linux:Rapport_d&#039;erreurs/Problèmes]]&lt;br /&gt;
* [[Lea_Linux:Rapport_d&#039;erreurs/Corrigés]]&lt;br /&gt;
&lt;br /&gt;
== Journal des changements ==&lt;br /&gt;
Voir : [[Lea_Linux:Journal_des_changements]]&lt;br /&gt;
&lt;br /&gt;
== Demandes de fonctionnalités ==&lt;br /&gt;
&lt;br /&gt;
* export xhtml(urgent), odt, docbook(facultatif)&lt;br /&gt;
* import auto xhtml(urgent), odt, docbook(facultatif)&lt;br /&gt;
* Utiliser automatiquement l’identifiant du phorum (Note de Fred: c&#039;est dans &#039;&#039;ma&#039;&#039; todolist)&lt;br /&gt;
* (jiel) aggrandir le textarea de la fenêtre d&#039;édition, ce serait plus pratique pour l&#039;édition ou la modif d&#039;articles. (Note: C&#039;est déjà possible, il suffit d&#039;éditer tes préférences -- non testé)&lt;br /&gt;
* Un truc de fou : voter pour des trucs / astuces / fiches (karma) et avoir une page spéciale qui fait le top --[[Utilisateur:Mike-m|Mike-m]] 25 oct 2005 à 09:14:25 (CEST)&lt;br /&gt;
&lt;br /&gt;
==Questions diverses==&lt;br /&gt;
===[[Café du coin]]===&lt;br /&gt;
*Bon, je parlais à [[Utilisateur:Ennael|ennael]] y&#039;a pas deux minutes, et je lui disais qu&#039;il serait peut-être pas mal d&#039;avoir un [[Café du coin]] pour les échanges directs entre personnes (vu que je n&#039;ai toujours pas compris comment on savait qu&#039;on avait un message à part en regardant direct sa page de discute ou en suivant de près les modifs récentes). &lt;br /&gt;
*Question afférente : Y&#039;a t&#039;il un espace de nom Léa-Linux genre, [[Léa-Linux:Tagada]] comme l&#039;espace d&#039;aide, dans lequel on pourrait mettre cette page/forum qui serait alors [[Léa-Linux:Café du coin]].  [[Utilisateur:Notafish|notafish]] [[Discussion Utilisateur:Notafish| }&amp;lt;&#039;;&amp;gt;]] 25 oct 2005 à 23:19 (CEST) Je réponds toute seule à ma question. Oui, l&#039;espace est Lea Linux:, nous aurions donc : [[Lea Linux:Café du coin]]. [[Utilisateur:Notafish|notafish]] [[Discussion Utilisateur:Notafish| }&amp;lt;&#039;;&amp;gt;]] 25 oct 2005 à 23:42 (CEST)&lt;br /&gt;
&lt;br /&gt;
===[[Aide:Aide|Aide]] et cache===&lt;br /&gt;
Je veux bien me dévouer pour faire une page &amp;quot;premiers pas&amp;quot; de découverte wiki (oeuf corse, pompée sur wp ;-) ) dédiée à ce wiki et ses fonctionalités bizarres. Le système de cache, par exemple, je n&#039;ai 1) pas tout compris 2) c&#039;est méchamment déroutant pour les gens qui connaissent bien mediawiki dans sa version de base. &lt;br /&gt;
voilou [[Utilisateur:Notafish|notafish]] [[Discussion Utilisateur:Notafish| }&amp;lt;&#039;;&amp;gt;]] 25 oct 2005 à 23:19 (CEST)&lt;br /&gt;
:ça me parait une très bonne idée (le café du coin ET la découverte de mediawiki), pour une explication du cache: je dois être mauvais pédagogue ;-p [[Utilisateur:Fred|Fred]] 26 oct 2005 à 15:58 (CEST)&lt;br /&gt;
::Honnêtement, je ne dirais pas que tu es mauvais pédagoque : c&#039;est assez déroutant ce cache quand on est déjà habitué à Mediawiki. On s&#039;y fait rapidement cependant et je trouve l&#039;idée (et le module pour Mediawiki) très intéressante : c&#039;est par exemple dix fois plus simple que la modération à la SPIP, qui, finalement, me semble terriblement lourde à gérer.&lt;br /&gt;
::Delphine : si tu as le courage de te lancer dans l&#039;aide et un café du coin, je t&#039;encourage vivement : le wiki manque encore de structuration et, surtout, de place centrale où échanger nos idées. J&#039;ai cherché en vain un tel lieu (et me suis dit que j&#039;allais le créer, sans en prendre le temps), et c&#039;est important. [[Utilisateur:Vincent Ramos|Vincent Ramos]] 27 oct 2005 à 11:50 (CEST)&lt;/div&gt;</summary>
		<author><name>Vincent Ramos</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Lea_Linux:Mod%C3%A9ration/Aide_%C3%A0_la_mod%C3%A9ration&amp;diff=10092</id>
		<title>Lea Linux:Modération/Aide à la modération</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Lea_Linux:Mod%C3%A9ration/Aide_%C3%A0_la_mod%C3%A9ration&amp;diff=10092"/>
		<updated>2005-10-27T02:38:53Z</updated>

		<summary type="html">&lt;p&gt;Vincent Ramos : /* Modération sur le wiki de Léa */ ortho&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Principe de modération sur Léa =&lt;br /&gt;
Médiawiki n&#039;a aucune connaissance d&#039;une quelconque modération. C&#039;est contraire au principe qui sous-tend mediawiki. Nous avons donc développé un cache statique pour Léa qui sert aussi à permettre la modération (et donc la validation ou l&#039;invalidation des modification des pages par les utilisateurs de Léa). Il fonctionne de la manière suivante.&lt;br /&gt;
&lt;br /&gt;
Le cache commence vide (assez classique en somme...)&lt;br /&gt;
&lt;br /&gt;
Le serveur apache de Léa reçoit une demande de page, par exemple &amp;lt;nowiki&amp;gt;http://lea-linux.org/cached/index/Accueil.html&amp;lt;/nowiki&amp;gt;, il vérifie que cette page est présente dans le cache statique.&lt;br /&gt;
* Si c&#039;est le cas, il l&#039;affiche et ne consulte pas mediawiki pour savoir si la page a été modifiée ou autre&lt;br /&gt;
* Si ce n&#039;est pas le cas, il demande à mediawiki de générer la page, et la stocke si besoin dans le cache. Si la page est décrété par le serveur comme devant être cachée, toute modification ultérieure de la page par mediawiki sera invisible, vu que l&#039;on tombera dans le premier membre de l&#039;alternative.&lt;br /&gt;
&lt;br /&gt;
Il existe pour éviter le cache, un partie &amp;quot;non-caché&amp;quot; de Léa, elle est disponible via, la petite clé anglaise en haut à droite de toutes les pages. Cliquer sur ce lien suppose qu&#039;on a créé un compte mediawiki (et éventuellement que l&#039;on a obtenu des administrateurs de Léa les droits idoines). C&#039;est dans cette partie que se passe la gestion du cache et de la modération des pages.&lt;br /&gt;
&lt;br /&gt;
= Modération sur le wiki de Léa =&lt;br /&gt;
On accède à la page permettant la modération sur Léa en cliquant sur la lien &amp;lt;code&amp;gt;Modération&amp;lt;/code&amp;gt; disponible lorsque l&#039;utilisateur actuellement loggué en a les droits. &lt;br /&gt;
: &amp;lt;border&amp;gt;[[Image:modero-bouton.jpg]]&amp;lt;/border&amp;gt;&lt;br /&gt;
On arrive alors sur la page : &lt;br /&gt;
:  &amp;lt;border&amp;gt;[[Image:modero-menu.jpg]]&amp;lt;/border&amp;gt;&lt;br /&gt;
* Le bouton &amp;lt;key&amp;gt;Actualise l&#039;affichage&amp;lt;/key&amp;gt; est un lien vers la page principale de modération.&lt;br /&gt;
* Le bouton &amp;lt;key&amp;gt;Nettoyage du cache&amp;lt;/key&amp;gt; permet d&#039;effacer les fichiers du cache qui n&#039;empêchent pas la modération.&lt;br /&gt;
* Le bouton &amp;lt;key&amp;gt;Relire la liste des fichiers&amp;lt;/key&amp;gt; supprime le cache de la liste de fichiers (qui permet un accès plus rapide à la modération, au prix de possibles erreurs dans la liste)&lt;br /&gt;
Si on recherche une page précise dans le cache, on peut cliquer directement sur la barre de navigation (plutôt que de parcourir page après page la liste des articles).&lt;br /&gt;
:&amp;lt;border&amp;gt; [[Image:modero-navigation.jpg]]&amp;lt;/border&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Les différentes catégories de page =&lt;br /&gt;
Dans le cache de Léa on trouve trois sorte de pages : &lt;br /&gt;
* les page dont le cache est à jour (c&#039;est à dire que la version qui est stockée dans la base de donnée de mediawiki est la même que celle qui a servi a générer la page actuellement dans le cache. Ces page sont visibles de cette façon :&amp;lt;br /&amp;gt; &amp;lt;border&amp;gt;[[Image:modero-cache-ajour.jpg]] &amp;lt;/border&amp;gt;&amp;lt;br /&amp;gt; Le nombre de pages dépendantes dans le cache indique le nombre de page nécessaire dans le cache pour simuler le caractère dynamique (il peut y avoir beaucoup de pages dépendantes : une page par révision de la même page, une page historique, etc.) ;&lt;br /&gt;
* les pages qui n&#039;ont pas de date de révision :&amp;lt;br /&amp;gt; &amp;lt;border&amp;gt;[[Image:modero-no-rev.jpg]] &amp;lt;/border&amp;gt;&amp;lt;br /&amp;gt; Ces pages sont en fait les pages qui sont dans le cache et dont le programme gérant la modération n&#039;a pas trouvé de correspondance dans la base de données. Normalement les pages dans le cache se trouvent forcément dans la base, mais la modération sur Léa est encore au stade &amp;quot;pre-alpha&amp;quot; ;&lt;br /&gt;
* les pages qui n&#039;ont pas encore été modérées (c&#039;est à dire qui n&#039;ont pas été validée par un modérateur) :&amp;lt;br /&amp;gt; &amp;lt;border&amp;gt;[[Image:modero-non-moderees.jpg]] &amp;lt;/border&amp;gt;&amp;lt;br /&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Effacer une page du cache =&lt;br /&gt;
Un modérateur peut décider d&#039;effacer une page du cache pour différentes raisons (le programme pre-alpha n&#039;a pas dédecté correctement une dépendance, etc ...). Il suffit de cliquer sur les liens &amp;lt;code&amp;gt;(rm)&amp;lt;/code&amp;gt; (oui, oui comme la commande &amp;lt;code&amp;gt;rm&amp;lt;/code&amp;gt; du shell). On lui demande alors confirmation :&lt;br /&gt;
:&amp;lt;border&amp;gt;[[Image:modero-confirme-efface.jpg]]  &amp;lt;/border&amp;gt;&lt;br /&gt;
Après confirmation, le programme confirme qu&#039;il a bien effacé la page en question :&lt;br /&gt;
:&amp;lt;border&amp;gt;[[Image:modero-efface.jpg]]&amp;lt;/border&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Modération des pages =&lt;br /&gt;
Avant de valider une page, le modérateur doit vérifier que les modifications effectuées ne sont pas un tissu d&#039;aneries (si, si ça arrive), en cliquant sur le bouton : &amp;lt;code&amp;gt;(diff)&amp;lt;/code&amp;gt; qui affiche les différences entre la version qui est dans le cache et la version telle qu&#039;elle a été modifiée : &lt;br /&gt;
:&amp;lt;border&amp;gt;[[Image:modero-diff.jpg]]&amp;lt;/border&amp;gt;&lt;br /&gt;
Si les modification sont acceptables, on clique sur le bouton &amp;lt;code&amp;gt;[Accepter]&amp;lt;/code&amp;gt; qui affiche alors : &lt;br /&gt;
: &amp;lt;border&amp;gt;[[Image:modero-accept-modif.jpg]]&amp;lt;/border&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si on ne veut pas accepter telle quelle les modifications, on peut soit révoquer les modification de l&#039;utilisateur sur cette page (mais attention, il peut arriver que l&#039;on efface en même temps des choses qui sont dans la page du cache. En effet, mediawiki ne peut révoquer des modification que par &amp;quot;lots&amp;quot; : correspondants à toutes les modifications &#039;&#039;récentes&#039;&#039; d&#039;un utilisateur. &lt;br /&gt;
&lt;br /&gt;
Dans un certain nombre de cas, on préférera peut-être éditer la page, soit pour en corriger une partie litigieuse, soit pour effacer une petite partie de la page.&lt;br /&gt;
&lt;br /&gt;
= Statistiques du cache =&lt;br /&gt;
La page de modération affiche aussi quelques statistiques à propos du cache.&lt;br /&gt;
: &amp;lt;border&amp;gt;[[Image:modero-stats.jpg]].&amp;lt;/border&amp;gt;&lt;br /&gt;
La différences entre « pages » et « fichiers » est importante. Chaque page de mediawiki peut être présentes de multiples fois dans le cache en tant que fichier (ce sont les pages dépendantes dont on a parlé plus haut).&lt;br /&gt;
&lt;br /&gt;
= Aide à la modération et l&#039;administration du wiki =&lt;br /&gt;
Trois pages sont particulièrement utiles pour vérifier l&#039;état des pages de Léa :&lt;br /&gt;
* [[Special:BrokenRedirects|Redirections cassées]] : permet de trouver les pages dont la redirection pointe dans le vide,&lt;br /&gt;
* [[Special:DoubleRedirects|Doubles redirections]] : permet de trouver les pages dont la redirection pointe vers une redirection et donc dont la redirection n&#039;est pas transparente,&lt;br /&gt;
* [[Special:Wantedpages|Pages les plus demandées]] : permet de trouver les pages vers lesquelles des liens du wiki aboutissent mais qui n&#039;existent pas, souvent : une erreur de lien dans la page inititale&lt;/div&gt;</summary>
		<author><name>Vincent Ramos</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Lea_Linux:Rapport_d%27erreurs&amp;diff=10091</id>
		<title>Lea Linux:Rapport d&#039;erreurs</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Lea_Linux:Rapport_d%27erreurs&amp;diff=10091"/>
		<updated>2005-10-27T02:33:05Z</updated>

		<summary type="html">&lt;p&gt;Vincent Ramos : Ortho&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Bogues ==&lt;br /&gt;
=== À régler ===&lt;br /&gt;
* [[Utilisateur:Vincent Ramos|Vincent Ramos]] 27 oct 2005 à 04:33 (CEST) Corriger &#039;&#039;page précédante&#039;&#039; en &#039;&#039;page précéd&#039;&#039;&#039;e&#039;&#039;&#039;nte&#039;&#039; dans la page de modération. Pour la même page, je suggère une plus grande cohérence en mettant tous les verbes à l&#039;infinitif et autres : « Gère&#039;&#039;&#039;r&#039;&#039;&#039; la modération sur Léa, Effacer le cache, Actualise&#039;&#039;&#039;r&#039;&#039;&#039; l&#039;affichage, &#039;&#039;&#039;Vider le&#039;&#039;&#039; &amp;lt;s&amp;gt;Nettoyage du&amp;lt;/s&amp;gt; cache, Afficher les modérations, &#039;&#039;&#039;Actualiser&#039;&#039;&#039; &amp;lt;s&amp;gt;Relire&amp;lt;/s&amp;gt; la liste des fichiers, Aide ». Je &#039;&#039;suggère&#039;&#039;, hein, je ne voudrais pas passer pour un affreux.&lt;br /&gt;
* [[Utilisateur:Vincent Ramos|Vincent Ramos]] 26 oct 2005 à 14:51 (CEST) En passant, il y a aussi un bug avec &amp;lt;nowiki&amp;gt;&#039;&#039;&#039;&amp;lt;/nowiki&amp;gt;, que j&#039;ai dû remplacer par &amp;lt;nowiki&amp;gt;&amp;lt;b&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;/nowiki&amp;gt; dans le paragraphe indenté par &amp;lt;:&amp;gt; précédent. &lt;br /&gt;
*: peut-être mais là, je n&#039;y peux rien : doit falloir patcher  mediawiki et je ne m&#039;en sens pas capable de suite&lt;br /&gt;
*[[Utilisateur:Notafish|notafish]] [[Discussion Utilisateur:Notafish| }&amp;lt;&#039;;&amp;gt;]] 26 oct 2005 à 00:08 (CEST) Bogue de css je pense. Le style de lien dans un titre prend le pas sur la balise titre et donc la police est plus petite. Pas bô. Voir plus bas ma section intitulée Aide et cache.&lt;br /&gt;
*[[Utilisateur:Notafish|notafish]] [[Discussion Utilisateur:Notafish| }&amp;lt;&#039;;&amp;gt;]] 26 oct 2005 à 00:06 (CEST) orthographe : le &amp;quot;contribution de l&#039;tilisateur&amp;quot; qui devrait dire &amp;quot;contribution&#039;&#039;&#039;s&#039;&#039;&#039; de l&#039;utilisateur&amp;quot;. amha. &lt;br /&gt;
* (Jiel) 24 oct 2005 à 15:44 (GMT) http://lea-linux.org/cached/index/ModÃšle:Fiches:plan-internet.html ne modifie pas http://lea-linux.org/cached/index/Fiches:Index.html&lt;br /&gt;
*: problème lié au cache, connu : faut effacer du cache les pages dépendant de chaque modèle, pour faire mieux, faudrait attaquer la DB mediawiki et franchement ça me gave de toutes façon : on videra le cache de temps en temps pour remettre tout à plat.&lt;br /&gt;
* [[Utilisateur:Anguy|Anguy]] 24 oct 2005 à 09:39 (CEST) : Une probable erreur du moteur de recherche, par exemple avec le terme &amp;quot;VNC&amp;quot; qui renvoie 0 article alors qu&#039;il devrait au moins afficher cette page [[http://lea-linux.org/cached/index/Reseau-resau_plus-vnc.html#  VNC]]&lt;br /&gt;
*: c&#039;est effectivement un bug du moteur, il jette les mots de moins de 3 lettres dans la recherche (je ne sais si c&#039;est médiawiki ou la rechercher fulltext de mysql et sa configuration)&lt;br /&gt;
* (JeanEtienne) Autre problème (?) du moteur de recherche : lorsque je ne suis pas connecté (a priori, c&#039;est le cas de l&#039;utilisateur lambda qui débarque) et que je veux effectuer une recherche, je rempli la case adéquate. Mais que je clique sur le bouton &amp;quot;Consulter&amp;quot; ou &amp;quot;Rechercher&amp;quot;, il me renvoie une erreur : &amp;quot;Nom d&#039;utilisateur nécessaire&amp;quot;, &amp;quot;Vous devez vous connecter pour voir les autres pages&amp;quot;. Par contre, toujours non connecté, je peux tout consulter en suivant les liens &amp;quot;Le réseau&amp;quot; -&amp;gt; &amp;quot;Se connecter&amp;quot; -&amp;gt; ... Est-ce une fonctionnalité voulue ou bien un petit bug de jeunesse ? En tous cas, je trouve (AMHA) le message d&#039;erreur peut engageant.&lt;br /&gt;
* (Mike-m) l&#039;éditeur est trompeur, pour faire un lien interne il propose la syntaxe &amp;lt;code&amp;gt;[[Lien Titre]]&amp;lt;/code&amp;gt; alors que c&#039;est &amp;lt;code&amp;gt;[[Lien|Et le titre]]&amp;lt;/code&amp;gt;&lt;br /&gt;
*: je ne peux rien y faire (sans patcher mediawiki, donc je ne le ferait pas) : ils n&#039;ont prévu qu&#039;un message pour les liens externes/internes alors que la syntaxe est différente&lt;br /&gt;
*:: Merci Fred, je m&#039;en doutais qu&#039;il fallait hacker le source, il est peut être bon que ce soit signalé après tout&lt;br /&gt;
* (Jiel) j&#039;ai pas trouvé la rubrique détente (http://lea-linux.org/detente/), elle a été migré? Pas trouvé en cherchant avec les url non plus (http://devel.lea-linux.org/nocache/index/Detente-index.html). J&#039;ai mal cherché? Bon je sais c&#039;est pas une rubrique ultra utile mais bon ;-)&lt;br /&gt;
*: effectivement (mais ce n&#039;est pas ma priorité) [[Utilisateur:Lea|Lea]] 13 oct 2005 à 14:26 (CEST)&lt;br /&gt;
*:: (Jiel) je devine mais c&#039;était juste pour le signaler :)&lt;br /&gt;
*::: http://devel.lea-linux.org/detente/ (-:&lt;br /&gt;
* je n&#039;ai pas retrouvé mon t&amp;amp;a sur la livebox http://lea-linux.org/trucs/item.657.html . est-ce qu&#039;ils ont tous été migrés ? [[Utilisateur:LeaJice|LeaJice]] 19 oct 2005 à 13:42 (CEST)&lt;br /&gt;
*: il doit y en avoir une 20{{exp|aines}} qui n&#039;ont pas migré pour diverses raisons (assez obscures : je n&#039;ai pas cherché, il semblerait que ce soit des problèmes d&#039;utf8 ou un truc du genre) : bref faudra les faire à la mano&lt;br /&gt;
* problème de traduction : tous les messages de médiawiki ne sont pas traduits, certains sont MAL traduits, merci de signaler ici les problèmes rencontrés.&lt;br /&gt;
** Certaine URL n&#039;ont pas été traduite correctement comme ici, je ne sais comment corriger : http://devel.lea-linux.org/cached/index/Intro-d%C3%A9marrage.html#Au_secours_.21 et plus généralement cette page (je n&#039;ai pas encore été voir d&#039;autre pour le moment) [[Utilisateur:YannTech|YannTech]] 16 oct 2005 à 20:51 (CEST)&lt;br /&gt;
**: je suppose que tu parles des liens du type : &lt;br /&gt;
**:*[../trucs/lire.php3?id=xxxx ...] il faut les transformer en : &amp;lt;nowiki&amp;gt;[[Trucs:Oldid=xxxx|...]]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
**:*[../logi/lire.php3?id=xxxx ... ] il faut les transformer en : &amp;lt;nowiki&amp;gt;[[Logithèque:Oldid=xxxx|...]]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
**:*[../driver/lire.php3?id=xxxx ... ] il faut les transformer en : &amp;lt;nowiki&amp;gt;[[Driver:Oldid=xxxx|...]]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
**:*[../annuaire/lire.php3?id=xxxx ... ] il faut les transformer en : &amp;lt;nowiki&amp;gt;[[Annuaire:Oldid=xxxx|...]]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
**:*[../trucs/?aff_item=xxxx ...] il faut les transformer en : &amp;lt;nowiki&amp;gt;[[Trucs:Oldid=xxxx|...]]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
**:*[../logi/?aff_item=xxxx ... ] il faut les transformer en : &amp;lt;nowiki&amp;gt;[[Logithèque:Oldid=xxxx|...]]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
**:*[../driver/?aff_item=xxxx ... ] il faut les transformer en : &amp;lt;nowiki&amp;gt;[[Driver:Oldid=xxxx|...]]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
**:*[../annuaire/?aff_item=xxxx ... ] il faut les transformer en : &amp;lt;nowiki&amp;gt;[[Annuaire:Oldid=xxxx|...]]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
**: Pour les pages avec &amp;quot;rub&amp;quot; remplacer les Oldid des liens précédants par &amp;quot;Oldrub&amp;quot;&lt;br /&gt;
** De même pour les URL en [/software/toms1.php3 article sur la distribution TOMSRTBT]  que faire ?&lt;br /&gt;
* il semblerait que l&#039;extension &amp;quot;rss&amp;quot; qui permet de d&#039;inclure des rss parte plus ou moins en vrille... je pense utiliser un script de récupération des rss dans la crontab&lt;br /&gt;
** Je n’ai rien remarqué de spécial, qu’est-ce qui ne va pas ? [[Utilisateur:Nicola|Nicola]]&lt;br /&gt;
** Lorsque la page doit être recréée, parfois, elle met un temps infini à se recharger (mais c&#039;est loin d&#039;être régulier : en tout cas, j&#039;ai plus eu ce pb depuis que j&#039;ai supprimé les lien &amp;quot;&amp;lt;nowiki&amp;gt;&amp;lt;rss&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;quot;)&lt;br /&gt;
* problèmes avec les catégories [[Special:Categories]]&lt;br /&gt;
** quel contenu mettre dans les pages de catégorie ? (Note de Fred: laissons faire le temps)&lt;br /&gt;
* export autre (ODT, xhtml, docbook?) (pas urgent)&lt;br /&gt;
* css &amp;quot;printable&amp;quot; (urgent)&lt;br /&gt;
* correction/suppression des pages &amp;quot;daubé&amp;quot;&lt;br /&gt;
* que faire de nawak&lt;br /&gt;
  -&amp;gt; (jice) tu parles des docs ou du logiciel ? pour les docs, elles ne sont pas importées, &lt;br /&gt;
et le logiciel ne va plus servir, donc je répondrais : rien ;-)&lt;br /&gt;
* sur la gauche le &#039;&#039;Découvrez et contribuez à Léa&#039;&#039; (juste en dessous du pavé &#039;&#039;Accueil - user - créer un compte - version imprimable | pdf - aide&#039;&#039;) sort du cadre (Firefox 1.5 beta 1)&lt;br /&gt;
* le &#039;&#039;changelog&#039;&#039; bureaucrate ne montre pas le statut acquis&lt;br /&gt;
* Les pdf récupérés via le menu à gauche ne sont pas lisibles dans Acrobat Reader 7 sous Window$. Sous gsview on a droit à une page blanche ... (encore non testé avec Xpdf) ! [[Utilisateur:AlSim|AlSim]] (23 oct 2005 - maj le 24)&lt;br /&gt;
:: bug de médiawiki : faire un rapport de bug à médiawiki ...&lt;br /&gt;
* FIXÉ : [[Utilisateur:Vincent Ramos|Vincent Ramos]] 25 oct 2005 à 13:30 (CEST) : le logo devrait être encadré par un lien qui ramène à l&#039;accueil.&lt;br /&gt;
*:(Anne) encadré je ne sais pas mais le lien sur le logo oui je pense aussi&lt;br /&gt;
*::Quand je dis &#039;&#039;encadré&#039;&#039;, c&#039;est par une balise &amp;lt;code&amp;gt;&amp;lt;a&amp;gt;&amp;lt;/code&amp;gt; et non une bordure. Je n&#039;étais pas clair. [[Utilisateur:Fred|Fred]] 26 oct 2005 à 15:55 (CEST)&lt;br /&gt;
*:([[Utilisateur:Fred|Fred]] 26 oct 2005 à 00:52 (CEST)) fait (sur les pages qui seront regénérées)&lt;br /&gt;
&lt;br /&gt;
=== Réglés ===&lt;br /&gt;
* [[Utilisateur:Fred|Fred]] 26 oct 2005 à 22:33 (CEST) : corrigé&lt;br /&gt;
*: [[Utilisateur:Vincent Ramos|Vincent Ramos]] 26 oct 2005 à 14:51 (CEST) : l&#039;orthographe du message d&#039;avertissement lors d&#039;une modification (normalement [[MediaWiki:Copyrightwarning]] ou [[MediaWiki:Copyrightwarning2]] mais cela ne semble pas le cas dans cette mouture du wiki : [[Utilisateur:Fred|Fred]]: non pour des raisons de vitesse on n&#039;utilise pas la base de donnée pour lire les messages mais le tableau - c&#039;est une option de mediawiki, d&#039;après les développeur on gagne 20 à 60% de temps de calcul par page ) &lt;br /&gt;
* ([[Utilisateur:Fred|Fred]] 26 oct 2005 à 10:28 (CEST)) réglé : &lt;br /&gt;
*[[Utilisateur:Notafish|notafish]] [[Discussion Utilisateur:Notafish| }&amp;lt;&#039;;&amp;gt;]] 25 oct 2005 à 23:38 (CEST) Quand je clique sur la page de Vincent (qui pourtant semble avoir quelque chose dessus, je suis renvoyée à la page d&#039;accueil ? quid ? Pas vrai avec les autres.&lt;br /&gt;
*: Le bug est vraiment vicieux ... si on met &amp;quot;Vinc&amp;quot; en n&#039;importe quelle position du nom de page on est redirigé vers l&#039;accueil ... je cherche mais ne comprends pas  ... exemple : [[BlaVincBlabla]] mais pas (enfin j&#039;ai pas encore trouvé d&#039;autres chaines qui le fond) avec autre chose que &amp;quot;Vinc&amp;quot; ... vraiment très étrange.&lt;br /&gt;
*::Cela n&#039;arrive qu&#039;avec la version en cache du site : j&#039;imagine que c&#039;est une histoire de page qui ne peut être servie (problème de cache ?), d&#039;où un 404 avec redirection vers la racine du site, non ? Ce bug n&#039;apparaît pas dans la version non cachée. [[Utilisateur:Vincent Ramos|Vincent Ramos]] 26 oct 2005 à 02:57 (CEST) &lt;br /&gt;
*::: oui j&#039;ai remarqué cela aussi, c&#039;est trés étrange, si je supprime le .htaccess contenant des rewrite rule c&#039;est quand même redirigé vers l&#039;accueil (normal aucune règle ne devrait matcher Vinc à cet endroit de l&#039;url) et si en plus je remplace le 404.php qui gère le cache lui-même, la redirection a lieu quand même ... ça me laisse plus que perplexe (surtout, ce qui m&#039;étonne, c&#039;est pas que j&#039;ai pu merdé un truc : ça je suis spécialiste, c&#039;est que ça arrive qu&#039;avec &amp;quot;Vinc&amp;quot; pourquoi donc &amp;quot;Vinc&amp;quot; ? J&#039;ai absolument aucune piste&lt;br /&gt;
*:::: encore plus étrange: sur devel.lea-linux.org et lea-linux.org il y a en ce moment exactement le même site (lien symbolique vers le même rep pour les deux vhosts) et bien le comportement n&#039;est pas le même, il revient au même (affichage de l&#039;accueil) mais dans un cas via une redirection, dans l&#039;autre affichage direct de la page Accueil semble-t-il sans redirection) ... je patauge dans la semoule.&lt;br /&gt;
*:::: on progresse, en fait c&#039;est pas Vinc qui pose problème mais &amp;quot;inc&amp;quot; ... comme include ... une piste ? ou pas ? mystère ! [[Utilisateur:Fred|Fred]] 26 oct 2005 à 03:21 (CEST)&lt;br /&gt;
*:::::Waouh, quel jolie recherche de bug ! [[Utilisateur:Vincent Ramos|Vincent Ramos]] 26 oct 2005 à 11:28 (CEST)&lt;br /&gt;
*::::: trouvé ! c&#039;était une erreur de la configuration d&#039;apache un &amp;lt;code&amp;gt;&amp;lt;Files ~ &amp;quot;.inc&amp;quot;&amp;gt;&amp;lt;/code&amp;gt; à la place d&#039;un &amp;lt;code&amp;gt;&amp;lt;Files ~ &amp;quot;\.inc$&amp;quot;&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* [[Utilisateur:keyes|keyes]]: Petit problème de syntaxe dans l&#039;email de confirmation de création d&#039;un compte. &amp;quot;Quelqu&#039;un, probablement vous avec l&#039; &#039;&#039;&#039;adresse email 82.xxx.xxx.xxx&#039;&#039;&#039;, a enregistré un compte « Keyes » avec cette email sur le site Lea Linux.&amp;quot; [...] Bien entendu il s&#039;agit de l&#039;adresse IP, pas de l&#039;adresse email.&lt;br /&gt;
*: corrigé&lt;br /&gt;
* (mike-m) l&#039;upload d&#039;une image ne marche pas,  à la place il me demande de me connecter, alors que je le suis déjà&lt;br /&gt;
*: il faut être éditeur ou plus pour pouvoir uploader des images. [[Utilisateur:Fred|Fred]] 23 oct 2005 à 22:32 (CEST)&lt;br /&gt;
*:: okidoki&lt;br /&gt;
* fait: &lt;br /&gt;
** amélioration de l&#039;interface de modération (recherche par lettre de début, par page)&lt;br /&gt;
** amélioration de la vitesse de l&#039;interface de modération (réduction de la charge serveur) : utilisation d&#039;un cache pour les information de fichier, le répertoire de cache ne sera plus parcouru des 100aines de fois pour juste se promener dans les fichiers du cache.&lt;br /&gt;
* fait: ajouter en bas de chaque article les &amp;quot;autres ressources&amp;quot; des anciens articles&lt;br /&gt;
*: dans la mesure du possible (ie: j&#039;ai pas cherché à la mano les tritres des articles, un certains nombres de ressources ~ 10, ont été mangées par médiawiki)&lt;br /&gt;
* Lorsque l&#039;on est sur la page des contributions d&#039;un utilisateur, il est affiché &#039;&#039;Contributions de $1&#039;&#039; au lieu du nom de l&#039;utilisateur&lt;br /&gt;
*: Ce n&#039;est pas un bug, mais il y a une faute de frappe dans les préférences utilisateur:  Me prévenir par courrile des changements de ma page&lt;br /&gt;
* affichage correct du fait qu&#039;on soit loggué ou pas : utilisation d&#039;un morceau de code javascript (seule solution que j&#039;ai trouvé, à cause du cache : qui rend certaine page statique alors qu&#039;elles sont toutes dynamiques du point de vue de l&#039;affichage de ce genre d&#039;information). Ce code ne vérifie pas les mots de passe : il suppose que les cookies annoncés sont corrects et bien fixés par mediawiki, si ce n&#039;est pas le cas et qu&#039;un mec essaie de truander, et bien il se retrouve avec un affichage qui lui fait croire qu&#039;il est vraiment loggué, même s&#039;il ne l&#039;est pas. Tant pis pour lui ;-p&lt;br /&gt;
* portage des commentaires de l&#039;ancien wiki dans le nouveau (les pages ne sont certainement pas &amp;quot;trés&amp;quot; correctes, mais ça permettra de les relire&lt;br /&gt;
* lien &amp;quot;ajouter un commentaire en bas de chaque page&amp;quot; qui ajoute un truc à la page &amp;quot;discussion&amp;quot;&lt;br /&gt;
* maj mediawik 1.5rc4 -&amp;gt; mediwiki 1.5.0&lt;br /&gt;
* CSS / Skin LéaLinux : liens d&#039;édition plus lisible + repositionnement des liens d&#039;édition du &#039;&#039;bas&#039;&#039;&lt;br /&gt;
* [[Utilisateur:Lea|Lea]] 3 oct 2005 à 17:20 (CEST) (réglé) (jiel) confirmation par courriel lors de la création de compte: quand je clique sur le lien pour confirmer, j&#039;ai &amp;quot;The requested URL /cached/index/Special:Confirmemail/[lettresetchiffres].html was not found on this server.&amp;quot;.&lt;br /&gt;
* 3 oct 2005 à 01:21 (CEST)  Les &amp;quot;Fiches pratiques&amp;quot; n&#039;affichent rien&lt;br /&gt;
** Ça m’étonnerait… lesquelles ?&lt;br /&gt;
** Moi rien ne m&#039;étonne, mais par contre, je n&#039;ai pas ce problème, de quelle fiche tu parles (url ?) et depuis quelles pages obtiens tu ces url ? (url ?)&lt;br /&gt;
** (jiel) Je pense qu&#039;il veut dire en cliquant dans le menu dans la boite en haut du site, le lien est &amp;quot;http://devel.lea-linux.org/cached/index/Fiches:index.html#&amp;quot; au lieu de &amp;quot;http://devel.lea-linux.org/cached/index/Fiches:Index.html#&amp;quot; (juste la maj qui change en fait). Les fiches sont donc accessibles sur la page d&#039;accueil en bas, mais pas dans la boite en haut.&lt;br /&gt;
** (fred) si c&#039;est ça : alors c&#039;est réglé ... je n&#039;avais pas ce &amp;quot;pb&amp;quot; sur konqi, ça faisait une redirection automatiquement vers la bonne page ... étrange...&lt;br /&gt;
* (2 oct 2005 à 18:22 (CEST) réglé) Pour l&#039;activation du compte, lorsque je clique sur l&#039;url de confirmation une fenêtre de connexion s&#039;affiche, mais il n&#039;a pas l&#039;air d&#039;apprécier mon login/passwd (me réaffiche la fenêtre de login) &lt;br /&gt;
** note : pour activer le compte, il n&#039;est rien besoin de faire : il est activé, d&#039;ailleur tu as posté ce text VIA ce compte ce qui prouve que tu es bien enregistré ET que ton compte fonctionne&lt;br /&gt;
** par contre, la confirmation d&#039;email ne semble pas fonctionner pour toi, puis-je te demander de m&#039;envoyer, l&#039;url qui est dans le mail de confirmation (mais avant, peux-tu recliquer dessus, je crois que je vois ou est le pb et j&#039;espere que je viens de le corriger).&lt;br /&gt;
* je n’arrive plus à éditer ma page utilisateur (nicola), il dit que je ne suis pas connecté, même problème avec pas mal de pages spéciales (semble réglé)&lt;br /&gt;
* création de page (lien en rouge) qui bugue (il y a parfois un / en trop entre edit et index) (may be fixed)&lt;br /&gt;
* la balise &#039;&#039;code&#039;&#039; crée un retour à la ligne (fixed)&lt;br /&gt;
* problème avec les &amp;quot;?&amp;quot; dans les noms de pages (enfin j&#039;espère)&lt;br /&gt;
* problème avec les login ne commençant pas par une majuscule : un ucfirst est fait pour éviter ce pb&lt;br /&gt;
* support d’utf-8 (si ce n’est pas déjà fait) : (note de fred: mediawiki est nativement en utf-8) &lt;br /&gt;
* contenu de l&#039;index : [[Accueil]] à revoir (urgent) : ce n&#039;est certes pas parfait, loin s&#039;en faut, mais un appel à contribution est lancé.&lt;br /&gt;
* export PDF (urgent) : version partiellement satisfaisante (à améliorer, mais plus tard) accessible via le bouton &amp;quot;Version pdf&amp;quot;.&lt;br /&gt;
* login sur nocache avec les identifiants mediawiki&lt;br /&gt;
* protection &amp;quot;fs-overflow&amp;quot; : les pages n&#039;existants pas ne génére rien dans le cache&lt;br /&gt;
* le bouton admin swap de &amp;quot;cached&amp;quot; à &amp;quot;nocache&amp;quot;&lt;br /&gt;
* lien des deux menus à voir (urgent) (FIXED)&lt;br /&gt;
* le renommage de page ne fonctionne pas comme il devrait : la redirection qui suit le renommage renvoie sur la page d&#039;Accueil plutôt que vers la bonne page (FIXED)&lt;br /&gt;
* dans le même ordre d&#039;idée lors de l&#039;upload d&#039;une image, l&#039;upload se fait bien mais la redirection qui suit l&#039;upload merdoit. (FIXED)&lt;br /&gt;
* problème avec les pages a un titre (ou un namespace) comportant des caractères accentués -&amp;gt; après la preview, ces caractères sont remplacés par : %xy%zt etc ... et ça plante le &amp;quot;title&amp;quot; (FRED:FIXED / putain d&#039;UTF-8 de mes deux !)&lt;br /&gt;
* problèmes avec les modèles (FRED:FIXED) :&lt;br /&gt;
** modification de la page Accueil car un modèle s&#039;utilise pour la page &amp;lt;nowiki&amp;gt;[[Modèle:Nom du modèle]]&amp;lt;/nowiki&amp;gt; avec le marqueur &amp;lt;nowiki&amp;gt;{{Nom du modèle}}&amp;lt;/nowiki&amp;gt; (FRED:FIXED)&lt;br /&gt;
** un seul niveau de catégorie, il faut éditer les pages des sous-catégories pour les inclure dans sa catégorie mère =&amp;gt; ajout de &amp;lt;nowiki&amp;gt;[[catégorie:nom de la catégorie mère]]&amp;lt;/nowiki&amp;gt; dans la page de la catégorie (Note de Fred: je ne vois pas vraiment ce que tu veux dire) (ST:FIXED par exemple [Catégorie:Applications] appartient à [Catégorie:Léa_pour_les_pros])&lt;br /&gt;
** l&#039;accès en lecture aux modèles en cache est interdit (demande d&#039;identification infinie) et ainsi les modèles ne sont pas résolus pour affichage : peut-être dû au problème de cache et caractères accentués&lt;br /&gt;
** cf doc http://fr.wikipedia.org/wiki/Aide:Modèle&lt;br /&gt;
* problème avec les liens mails, comment écrire un lien mailto en MediaWiki ? (FRED:FIXED) comme ça : mailto:capue@labas.com et pour éviter que ça merdoie : &amp;lt;nowiki&amp;gt;[mailto:capue@labas.com un joli nom]&amp;lt;/nowiki&amp;gt; donne : [mailto:capue@labas.com un joli nom]&lt;br /&gt;
* les sous sections, sous-sous sections etc... vautre le cache ex: [[Section/Page]] : FIXED (mais j&#039;ai l&#039;impression que les &amp;quot;rétro-lien&amp;quot; (ie: vers [[Section]] depuis [[Section/Page]] ne fonctionnent pas, pour une raison qui m&#039;échappe.&lt;br /&gt;
* version imprimable fonctionnelle&lt;br /&gt;
* FIXÉ : [[Utilisateur:Vincent Ramos|Vincent Ramos]] 25 oct 2005 à 04:06 (CEST) : la police à utiliser pour les paragraphes sous &amp;lt;nowiki&amp;gt;&amp;lt;code&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/nowiki&amp;gt; devrait être à chasse fixe (type Courier) et non proportionnelle. Pour certaines lignes de code, il y a des effets gênants (combien y a-t-il de traits d&#039;union dans -- et --- ?) et dans la majorité des cas, c&#039;est inesthétique. D&#039;autre par, la taille de police par défaut est minuscule. &lt;br /&gt;
*: Peux-tu me montrer une page qui pose un problème ? Merci --[[Utilisateur:Mike-m|Mike-m]] 25 oct 2005 à 04:17:06 (CEST)&lt;br /&gt;
*::Par exemple, [[Gestion des ACL]], dont voici une [[:image:Lea_traits_d_union.png|capture d&#039;écran]] sous Firefox sans réglages particuliers sous Debian. Noter le caractère peu clair de la première ligne de commande. De toute façon, quand je consulte Léa, je suis obligé d&#039;augmenter de manière importante la taille des caractères. Je me demande ce que donne le site pour les mal-voyants. [[Utilisateur:Vincent Ramos|Vincent Ramos]] 25 oct 2005 à 11:12 (CEST)&lt;br /&gt;
*::: pour les mal voyants : le zoom est leur ami, &lt;br /&gt;
*::: pour le code, je viens mettre la police &amp;quot;courier, fixed&amp;quot; et j&#039;ai supprimé le 90% de taille, (mais il faut reloader la page pour recharcher la CSS) ça devrait être plus lisible.&lt;br /&gt;
*::::La police en général est super fatigante sur mon écran. Et pas jolie du tout (sans anticrénelage, taille défaut trop grande ?) c&#039;est très bizarre. C&#039;est quoi comme police ?[[Utilisateur:Notafish|notafish]] [[Discussion Utilisateur:Notafish| }&amp;lt;&#039;;&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
== Journal des changements ==&lt;br /&gt;
Voir : [[Lea_Linux:Journal_des_changements]]&lt;br /&gt;
&lt;br /&gt;
== Demandes de fonctionnalités ==&lt;br /&gt;
&lt;br /&gt;
* export xhtml(urgent), odt, docbook(facultatif)&lt;br /&gt;
* import auto xhtml(urgent), odt, docbook(facultatif)&lt;br /&gt;
* Utiliser automatiquement l’identifiant du phorum (Note de Fred: c&#039;est dans &#039;&#039;ma&#039;&#039; todolist)&lt;br /&gt;
* (jiel) aggrandir le textarea de la fenêtre d&#039;édition, ce serait plus pratique pour l&#039;édition ou la modif d&#039;articles. (Note: C&#039;est déjà possible, il suffit d&#039;éditer tes préférences -- non testé)&lt;br /&gt;
* Un truc de fou : voter pour des trucs / astuces / fiches (karma) et avoir une page spéciale qui fait le top --[[Utilisateur:Mike-m|Mike-m]] 25 oct 2005 à 09:14:25 (CEST)&lt;br /&gt;
&lt;br /&gt;
==Questions diverses==&lt;br /&gt;
===[[Café du coin]]===&lt;br /&gt;
*Bon, je parlais à [[Utilisateur:Ennael|ennael]] y&#039;a pas deux minutes, et je lui disais qu&#039;il serait peut-être pas mal d&#039;avoir un [[Café du coin]] pour les échanges directs entre personnes (vu que je n&#039;ai toujours pas compris comment on savait qu&#039;on avait un message à part en regardant direct sa page de discute ou en suivant de près les modifs récentes). &lt;br /&gt;
*Question afférente : Y&#039;a t&#039;il un espace de nom Léa-Linux genre, [[Léa-Linux:Tagada]] comme l&#039;espace d&#039;aide, dans lequel on pourrait mettre cette page/forum qui serait alors [[Léa-Linux:Café du coin]].  [[Utilisateur:Notafish|notafish]] [[Discussion Utilisateur:Notafish| }&amp;lt;&#039;;&amp;gt;]] 25 oct 2005 à 23:19 (CEST) Je réponds toute seule à ma question. Oui, l&#039;espace est Lea Linux:, nous aurions donc : [[Lea Linux:Café du coin]]. [[Utilisateur:Notafish|notafish]] [[Discussion Utilisateur:Notafish| }&amp;lt;&#039;;&amp;gt;]] 25 oct 2005 à 23:42 (CEST)&lt;br /&gt;
&lt;br /&gt;
===[[Aide:Aide|Aide]] et cache===&lt;br /&gt;
Je veux bien me dévouer pour faire une page &amp;quot;premiers pas&amp;quot; de découverte wiki (oeuf corse, pompée sur wp ;-) ) dédiée à ce wiki et ses fonctionalités bizarres. Le système de cache, par exemple, je n&#039;ai 1) pas tout compris 2) c&#039;est méchamment déroutant pour les gens qui connaissent bien mediawiki dans sa version de base. &lt;br /&gt;
voilou [[Utilisateur:Notafish|notafish]] [[Discussion Utilisateur:Notafish| }&amp;lt;&#039;;&amp;gt;]] 25 oct 2005 à 23:19 (CEST)&lt;br /&gt;
ça me parait une très bonne idée (le café du coin ET la découverte de mediawiki), pour une explication du cache: je dois être mauvais pédagogue ;-p [[Utilisateur:Fred|Fred]] 26 oct 2005 à 15:58 (CEST)&lt;/div&gt;</summary>
		<author><name>Vincent Ramos</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Gestion_des_ACL&amp;diff=10090</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=10090"/>
		<updated>2005-10-27T02:25:46Z</updated>

		<summary type="html">&lt;p&gt;Vincent Ramos : /* Notes concernant la syntaxe de &amp;#039;&amp;#039;setfacl&amp;#039;&amp;#039; */&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. Les ACL sont conformes aux normes POSIX.&lt;br /&gt;
&lt;br /&gt;
Au moyen des ACL, on peut donc é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;. Noter au passage que les ACL ne sont pas possibles avec des systèmes de fichiers comme &#039;&#039;vfat&#039;&#039; (qui ne gère 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 -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 -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 fichier &#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.suse.de/~agruen/acl/linux-acls/online/ POSIX Access Control Lists on Linux].&lt;br /&gt;
&lt;br /&gt;
{{Copy|27.10.05|Vincent Ramos|FDL}}&lt;/div&gt;</summary>
		<author><name>Vincent Ramos</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Gestion_des_ACL&amp;diff=10089</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=10089"/>
		<updated>2005-10-27T02:24:00Z</updated>

		<summary type="html">&lt;p&gt;Vincent Ramos : /* Sauvegarde des données */&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. Les ACL sont conformes aux normes POSIX.&lt;br /&gt;
&lt;br /&gt;
Au moyen des ACL, on peut donc é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;. Noter au passage que les ACL ne sont pas possibles avec des systèmes de fichiers comme &#039;&#039;vfat&#039;&#039; (qui ne gère 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 -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 -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;
==Notes 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 fichier &#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.suse.de/~agruen/acl/linux-acls/online/ POSIX Access Control Lists on Linux].&lt;br /&gt;
&lt;br /&gt;
{{Copy|27.10.05|Vincent Ramos|FDL}}&lt;/div&gt;</summary>
		<author><name>Vincent Ramos</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Gestion_des_ACL&amp;diff=10088</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=10088"/>
		<updated>2005-10-27T02:23:05Z</updated>

		<summary type="html">&lt;p&gt;Vincent Ramos : /* Sauvegarde des données */&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. Les ACL sont conformes aux normes POSIX.&lt;br /&gt;
&lt;br /&gt;
Au moyen des ACL, on peut donc é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;. Noter au passage que les ACL ne sont pas possibles avec des systèmes de fichiers comme &#039;&#039;vfat&#039;&#039; (qui ne gère 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 -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 -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;&lt;br /&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;
==Notes 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 fichier &#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.suse.de/~agruen/acl/linux-acls/online/ POSIX Access Control Lists on Linux].&lt;br /&gt;
&lt;br /&gt;
{{Copy|27.10.05|Vincent Ramos|FDL}}&lt;/div&gt;</summary>
		<author><name>Vincent Ramos</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Gestion_des_ACL&amp;diff=10087</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=10087"/>
		<updated>2005-10-27T02:22:07Z</updated>

		<summary type="html">&lt;p&gt;Vincent Ramos : /* ls, cp et mv */ Nouvelle section&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. Les ACL sont conformes aux normes POSIX.&lt;br /&gt;
&lt;br /&gt;
Au moyen des ACL, on peut donc é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;. Noter au passage que les ACL ne sont pas possibles avec des systèmes de fichiers comme &#039;&#039;vfat&#039;&#039; (qui ne gère 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 fichier de stockage compatible ;&lt;br /&gt;
* et l&#039;utilisation d&#039;un logiciel de sauvegarde 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 -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 -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;&lt;br /&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;
==Notes 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 fichier &#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.suse.de/~agruen/acl/linux-acls/online/ POSIX Access Control Lists on Linux].&lt;br /&gt;
&lt;br /&gt;
{{Copy|27.10.05|Vincent Ramos|FDL}}&lt;/div&gt;</summary>
		<author><name>Vincent Ramos</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Attributs_%C3%A9tendus&amp;diff=10086</id>
		<title>Attributs étendus</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Attributs_%C3%A9tendus&amp;diff=10086"/>
		<updated>2005-10-27T01:40:57Z</updated>

		<summary type="html">&lt;p&gt;Vincent Ramos : /* Commande */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Les [[système de fichiers|systèmes de fichiers]] &#039;&#039;ext2&#039;&#039; et &#039;&#039;ext3&#039;&#039; (ainsi que &#039;&#039;reiserfs&#039;&#039; dans certaines conditions) offrent la possibilité de donner à des fichiers (fichiers réels ou répertoires) des &#039;&#039;&#039;attributs étendus&#039;&#039;&#039; qui s&#039;ajoutent aux [[permissions|permissions classiques POSIX.1]], éventuellement complétées par les [[ACL|permissions étendues ACL]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cadre type=&amp;quot;warning&amp;quot;&amp;gt;Seuls ces systèmes de fichiers offrant ces attributs, il n&#039;est pas prudent ─ en terme de sécurité ─ de s&#039;appuyer lourdement sur leur présence si l&#039;on est amené à transférer fréquemment des données d&#039;un système de fichiers &#039;&#039;ext&#039;&#039; à un autre. D&#039;autre part, il convient de tester ces possibilités : toutes les versions du noyau n&#039;en tiennent pas compte de la même manière.&amp;lt;/cadre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Mise en place==&lt;br /&gt;
Il n&#039;y a rien à faire pour des partitions en &#039;&#039;ext2&#039;&#039; ou &#039;&#039;ext3&#039;&#039;, qui respectent nativement les attributs étendus.&lt;br /&gt;
&lt;br /&gt;
Chose assez peu connue, cependant, le système de fichiers &#039;&#039;reiserfs&#039;&#039; peut respecter les attributs étendus, à condition d&#039;[[fstab|être monté]] avec l&#039;option idoine &amp;lt;code&amp;gt;attrs&amp;lt;/code&amp;gt;. Pour ce faire, les commandes suivantes sont appliquées : &lt;br /&gt;
* sur une partition non encore montée : &amp;lt;code&amp;gt;mount -t reiserfs -o attrs /dev/partition /point/de/montage&amp;lt;/code&amp;gt; ; &lt;br /&gt;
* sur une partition déjà montée : &amp;lt;code&amp;gt;mount -o attrs /point/de/montage&amp;lt;/code&amp;gt; (remontage à la volée).&lt;br /&gt;
&lt;br /&gt;
Pour que la prise en compte soit effective à chaque montage automatique (le cas échéant), il faut ajouter l&#039;option dans &#039;&#039;[[fstab|/etc/fstab]]&#039;&#039;. Par exemple : &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
/dev/hda1       /               reiserfs    defaults,acl,attrs 0       1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enfin, on peut recompiler son noyau avec l&#039;option &amp;lt;code&amp;gt;CONFIG_REISERFS_FS_XATTR = y&amp;lt;/code&amp;gt; pour que le mode &amp;lt;code&amp;gt;attr&amp;lt;/code&amp;gt; soit automatiquement appliqué lors du montage d&#039;une partition en &#039;&#039;reiserfs&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cadre type=&amp;quot;warning&amp;quot;&amp;gt;Noter que des fichiers d&#039;une partition en &#039;&#039;reiserfs&#039;&#039; montée sans l&#039;option &amp;lt;code&amp;gt;attrs&amp;lt;/code&amp;gt; (ou la recompilation du noyau) peuvent recevoir des attributs étendus : ils seront bien enregistrés mais n&#039;auront aucun effet. La commande de modification d&#039;attributs, &#039;&#039;chattr&#039;&#039;, ne renverra donc aucun message d&#039;erreur sans pour autant que les attributs soient pris en compte. Ce détail peut avoir des répercussion pour la sécurité du système : on peut, à tort, croire protéger des fichiers.&amp;lt;/cadre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Types d&#039;attributs==&lt;br /&gt;
Selon la norme POSIX.1, tout fichier possède les permissions en lecture, écriture et exécution. On peut leur adjoindre des attributs supplémentaires, qui s&#039;imposent à tous les utilisateurs hormis root quand ils modifient les actions qu&#039;on peut avoir sur eux. Certains attributs sont actuellement expérimentaux (octobre 2005) et nécessitent de patcher le noyau pour qu&#039;ils aient un effet réel. &lt;br /&gt;
&lt;br /&gt;
;append only (a), « ajouter seulement » ─ &#039;&#039;&#039;réservé à root&#039;&#039;&#039;&lt;br /&gt;
:Protège le fichier contre la suppression de contenu : on ne peut que lui en ajouter. &lt;br /&gt;
;compressed (c), « compresser » ─ &#039;&#039;&#039;expérimental&#039;&#039;&#039;&lt;br /&gt;
:Le fichier est automatiquement compressé ─ si c&#039;est utile, et avec un format de compression le plus efficace ─ quand il est stocké. La décompression lors de la lecture et la compression des données ajoutées au fichier par la suite se font à la volée, de manière transparente pour l&#039;utilisateur (la commande &amp;lt;code&amp;gt;ls -l&amp;lt;/code&amp;gt;, par exemple, montre la taille décompressée). &lt;br /&gt;
:Cet attribut appliqué à un répertoire ne le compresse pas mais fait se compresser automatiquement tout nouveau fichier qu&#039;on y crée.&lt;br /&gt;
;no dump (d), « pas de sauvegarde »&lt;br /&gt;
:Un fichier ainsi marqué sera ignoré par la commande &#039;&#039;dump&#039;&#039;.&lt;br /&gt;
;immutable (i), « immuable » ─ &#039;&#039;&#039;réservé à root&#039;&#039;&#039;&lt;br /&gt;
:Protège le fichier contre toute modification (suppression, modification, déplacement, changements de permissions), même par root, et empêche qu&#039;on crée un lien vers lui. Seule la modification des attributs étendus est permise à son propriétaire et seul root peut enlever l&#039;attribut « immuable » d&#039;un fichier.&lt;br /&gt;
:Cet attribut est sans doute l&#039;un des plus intéressants.&lt;br /&gt;
;data journalling (j), « journalisation des données » ─ &#039;&#039;&#039;réservé à root&#039;&#039;&#039;&lt;br /&gt;
:Cet attribut n&#039;est utile qu&#039;avec une partition en &#039;&#039;ext3&#039;&#039; montée avec les options de journalisation des données &amp;lt;code&amp;gt;data=ordered&amp;lt;/code&amp;gt; (montage par défaut) ou &amp;lt;code&amp;gt;data=writeback&amp;lt;/code&amp;gt; pour simuler une journalisation du type &amp;lt;code&amp;gt;data=journal&amp;lt;/code&amp;gt;, où les données sont écrites dans le journal avant de l&#039;être dans le fichier lui-même. Consulter &amp;lt;code&amp;gt;man mount 8&amp;lt;/code&amp;gt; pour plus de détails sur les mécanismes de journalisation d&#039;&#039;&#039;ext3&#039;&#039;. &lt;br /&gt;
:Sur une partition &#039;&#039;ext3&#039;&#039; en mode &amp;lt;code&amp;gt;data=journal&amp;lt;/code&amp;gt;, cet attribut est ignoré, de même que sur les partitions en &#039;&#039;ext2&#039;&#039; et &#039;&#039;reiserfs&#039;&#039;, le premier type n&#039;étant pas journalisé, le second l&#039;étant d&#039;une manière incompatible.&lt;br /&gt;
;secure deletion (s), « effacement sécurisé »  ─ &#039;&#039;&#039;expérimental&#039;&#039;&#039;&lt;br /&gt;
:&lt;br /&gt;
;no tail-merging (t)&lt;br /&gt;
;undeletable (u) ─ &#039;&#039;&#039;experimental&#039;&#039;&#039;&lt;br /&gt;
;no atime updates (A)&lt;br /&gt;
;synchronous directory updates (D)&lt;br /&gt;
;synchronous updates (S)&lt;br /&gt;
;top of directory hierarchy (T).&lt;br /&gt;
&lt;br /&gt;
==Commande==&lt;br /&gt;
lschattr, chattr&lt;br /&gt;
e2fsprogs&lt;br /&gt;
&amp;lt;!-- The  ‘c’,  ’s’,   and  ‘u’  attributes  are  not  honored by the ext2 and ext3 filesystems as implemented in the current mainline Linux kernels. These attributes may be implemented in future versions ext2 and ext3. The ‘j’ option is only useful if the filesystem is mounted as ext3. The ‘D’ option is only useful on Linux kernel 2.5.19 and later. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Copy|28.10.05|Vincent Ramos|FDL}}--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vincent Ramos</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Attributs_%C3%A9tendus&amp;diff=10085</id>
		<title>Attributs étendus</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Attributs_%C3%A9tendus&amp;diff=10085"/>
		<updated>2005-10-27T01:38:06Z</updated>

		<summary type="html">&lt;p&gt;Vincent Ramos : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Les [[système de fichiers|systèmes de fichiers]] &#039;&#039;ext2&#039;&#039; et &#039;&#039;ext3&#039;&#039; (ainsi que &#039;&#039;reiserfs&#039;&#039; dans certaines conditions) offrent la possibilité de donner à des fichiers (fichiers réels ou répertoires) des &#039;&#039;&#039;attributs étendus&#039;&#039;&#039; qui s&#039;ajoutent aux [[permissions|permissions classiques POSIX.1]], éventuellement complétées par les [[ACL|permissions étendues ACL]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cadre type=&amp;quot;warning&amp;quot;&amp;gt;Seuls ces systèmes de fichiers offrant ces attributs, il n&#039;est pas prudent ─ en terme de sécurité ─ de s&#039;appuyer lourdement sur leur présence si l&#039;on est amené à transférer fréquemment des données d&#039;un système de fichiers &#039;&#039;ext&#039;&#039; à un autre. D&#039;autre part, il convient de tester ces possibilités : toutes les versions du noyau n&#039;en tiennent pas compte de la même manière.&amp;lt;/cadre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Mise en place==&lt;br /&gt;
Il n&#039;y a rien à faire pour des partitions en &#039;&#039;ext2&#039;&#039; ou &#039;&#039;ext3&#039;&#039;, qui respectent nativement les attributs étendus.&lt;br /&gt;
&lt;br /&gt;
Chose assez peu connue, cependant, le système de fichiers &#039;&#039;reiserfs&#039;&#039; peut respecter les attributs étendus, à condition d&#039;[[fstab|être monté]] avec l&#039;option idoine &amp;lt;code&amp;gt;attrs&amp;lt;/code&amp;gt;. Pour ce faire, les commandes suivantes sont appliquées : &lt;br /&gt;
* sur une partition non encore montée : &amp;lt;code&amp;gt;mount -t reiserfs -o attrs /dev/partition /point/de/montage&amp;lt;/code&amp;gt; ; &lt;br /&gt;
* sur une partition déjà montée : &amp;lt;code&amp;gt;mount -o attrs /point/de/montage&amp;lt;/code&amp;gt; (remontage à la volée).&lt;br /&gt;
&lt;br /&gt;
Pour que la prise en compte soit effective à chaque montage automatique (le cas échéant), il faut ajouter l&#039;option dans &#039;&#039;[[fstab|/etc/fstab]]&#039;&#039;. Par exemple : &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
/dev/hda1       /               reiserfs    defaults,acl,attrs 0       1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enfin, on peut recompiler son noyau avec l&#039;option &amp;lt;code&amp;gt;CONFIG_REISERFS_FS_XATTR = y&amp;lt;/code&amp;gt; pour que le mode &amp;lt;code&amp;gt;attr&amp;lt;/code&amp;gt; soit automatiquement appliqué lors du montage d&#039;une partition en &#039;&#039;reiserfs&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cadre type=&amp;quot;warning&amp;quot;&amp;gt;Noter que des fichiers d&#039;une partition en &#039;&#039;reiserfs&#039;&#039; montée sans l&#039;option &amp;lt;code&amp;gt;attrs&amp;lt;/code&amp;gt; (ou la recompilation du noyau) peuvent recevoir des attributs étendus : ils seront bien enregistrés mais n&#039;auront aucun effet. La commande de modification d&#039;attributs, &#039;&#039;chattr&#039;&#039;, ne renverra donc aucun message d&#039;erreur sans pour autant que les attributs soient pris en compte. Ce détail peut avoir des répercussion pour la sécurité du système : on peut, à tort, croire protéger des fichiers.&amp;lt;/cadre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Types d&#039;attributs==&lt;br /&gt;
Selon la norme POSIX.1, tout fichier possède les permissions en lecture, écriture et exécution. On peut leur adjoindre des attributs supplémentaires, qui s&#039;imposent à tous les utilisateurs hormis root quand ils modifient les actions qu&#039;on peut avoir sur eux. Certains attributs sont actuellement expérimentaux (octobre 2005) et nécessitent de patcher le noyau pour qu&#039;ils aient un effet réel. &lt;br /&gt;
&lt;br /&gt;
;append only (a), « ajouter seulement » ─ &#039;&#039;&#039;réservé à root&#039;&#039;&#039;&lt;br /&gt;
:Protège le fichier contre la suppression de contenu : on ne peut que lui en ajouter. &lt;br /&gt;
;compressed (c), « compresser » ─ &#039;&#039;&#039;expérimental&#039;&#039;&#039;&lt;br /&gt;
:Le fichier est automatiquement compressé ─ si c&#039;est utile, et avec un format de compression le plus efficace ─ quand il est stocké. La décompression lors de la lecture et la compression des données ajoutées au fichier par la suite se font à la volée, de manière transparente pour l&#039;utilisateur (la commande &amp;lt;code&amp;gt;ls -l&amp;lt;/code&amp;gt;, par exemple, montre la taille décompressée). &lt;br /&gt;
:Cet attribut appliqué à un répertoire ne le compresse pas mais fait se compresser automatiquement tout nouveau fichier qu&#039;on y crée.&lt;br /&gt;
;no dump (d), « pas de sauvegarde »&lt;br /&gt;
:Un fichier ainsi marqué sera ignoré par la commande &#039;&#039;dump&#039;&#039;.&lt;br /&gt;
;immutable (i), « immuable » ─ &#039;&#039;&#039;réservé à root&#039;&#039;&#039;&lt;br /&gt;
:Protège le fichier contre toute modification (suppression, modification, déplacement, changements de permissions), même par root, et empêche qu&#039;on crée un lien vers lui. Seule la modification des attributs étendus est permise à son propriétaire et seul root peut enlever l&#039;attribut « immuable » d&#039;un fichier.&lt;br /&gt;
:Cet attribut est sans doute l&#039;un des plus intéressants.&lt;br /&gt;
;data journalling (j), « journalisation des données » ─ &#039;&#039;&#039;réservé à root&#039;&#039;&#039;&lt;br /&gt;
:Cet attribut n&#039;est utile qu&#039;avec une partition en &#039;&#039;ext3&#039;&#039; montée avec les options de journalisation des données &amp;lt;code&amp;gt;data=ordered&amp;lt;/code&amp;gt; (montage par défaut) ou &amp;lt;code&amp;gt;data=writeback&amp;lt;/code&amp;gt; pour simuler une journalisation du type &amp;lt;code&amp;gt;data=journal&amp;lt;/code&amp;gt;, où les données sont écrites dans le journal avant de l&#039;être dans le fichier lui-même. Consulter &amp;lt;code&amp;gt;man mount 8&amp;lt;/code&amp;gt; pour plus de détails sur les mécanismes de journalisation d&#039;&#039;&#039;ext3&#039;&#039;. &lt;br /&gt;
:Sur une partition &#039;&#039;ext3&#039;&#039; en mode &amp;lt;code&amp;gt;data=journal&amp;lt;/code&amp;gt;, cet attribut est ignoré, de même que sur les partitions en &#039;&#039;ext2&#039;&#039; et &#039;&#039;reiserfs&#039;&#039;, le premier type n&#039;étant pas journalisé, le second l&#039;étant d&#039;une manière incompatible.&lt;br /&gt;
;secure deletion (s), « effacement sécurisé »  ─ &#039;&#039;&#039;expérimental&#039;&#039;&#039;&lt;br /&gt;
:&lt;br /&gt;
;no tail-merging (t)&lt;br /&gt;
;undeletable (u) ─ &#039;&#039;&#039;experimental&#039;&#039;&#039;&lt;br /&gt;
;no atime updates (A)&lt;br /&gt;
;synchronous directory updates (D)&lt;br /&gt;
;synchronous updates (S)&lt;br /&gt;
;top of directory hierarchy (T).&lt;br /&gt;
&lt;br /&gt;
==Commande==&lt;br /&gt;
lschattr, chattr&lt;br /&gt;
e2fsprogs&lt;br /&gt;
&amp;lt;!-- The  ‘c’,  ’s’,   and  ‘u’  attributes  are  not  honored by the ext2 and ext3 filesystems as implemented in the current mainline Linux kernels. These attributes may be implemented in future versions ext2 and ext3. The ‘j’ option is only useful if the filesystem is mounted as ext3. The ‘D’ option is only useful on Linux kernel 2.5.19 and later.&lt;br /&gt;
&lt;br /&gt;
{{Copy|28.10.05|Vincent Ramos|FDL}}&lt;/div&gt;</summary>
		<author><name>Vincent Ramos</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Attributs_%C3%A9tendus&amp;diff=10084</id>
		<title>Attributs étendus</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Attributs_%C3%A9tendus&amp;diff=10084"/>
		<updated>2005-10-27T01:37:42Z</updated>

		<summary type="html">&lt;p&gt;Vincent Ramos : Suite&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Les [[système de fichiers|systèmes de fichiers]] &#039;&#039;ext2&#039;&#039; et &#039;&#039;ext3&#039;&#039; offrent la possibilité de donner à des fichiers (fichiers réels ou répertoires) des &#039;&#039;&#039;attributs étendus&#039;&#039;&#039; qui s&#039;ajoutent aux [[permissions|permissions classiques POSIX.1]], éventuellement complétées par les [[ACL|permissions étendues ACL]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cadre type=&amp;quot;warning&amp;quot;&amp;gt;Seuls ces systèmes de fichiers offrant ces attributs, il n&#039;est pas prudent ─ en terme de sécurité ─ de s&#039;appuyer lourdement sur leur présence si l&#039;on est amené à transférer fréquemment des données d&#039;un système de fichiers &#039;&#039;ext&#039;&#039; à un autre.&amp;lt;/cadre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les [[système de fichiers|systèmes de fichiers]] &#039;&#039;ext2&#039;&#039; et &#039;&#039;ext3&#039;&#039; (ainsi que &#039;&#039;reiserfs&#039;&#039; dans certaines conditions) offrent la possibilité de donner à des fichiers (fichiers réels ou répertoires) des &#039;&#039;&#039;attributs étendus&#039;&#039;&#039; qui s&#039;ajoutent aux [[permissions|permissions classiques POSIX.1]], éventuellement complétées par les [[ACL|permissions étendues ACL]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cadre type=&amp;quot;warning&amp;quot;&amp;gt;Seuls ces systèmes de fichiers offrant ces attributs, il n&#039;est pas prudent ─ en terme de sécurité ─ de s&#039;appuyer lourdement sur leur présence si l&#039;on est amené à transférer fréquemment des données d&#039;un système de fichiers &#039;&#039;ext&#039;&#039; à un autre. D&#039;autre part, il convient de tester ces possibilités : toutes les versions du noyau n&#039;en tiennent pas compte de la même manière.&amp;lt;/cadre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Mise en place==&lt;br /&gt;
Il n&#039;y a rien à faire pour des partitions en &#039;&#039;ext2&#039;&#039; ou &#039;&#039;ext3&#039;&#039;, qui respectent nativement les attributs étendus.&lt;br /&gt;
&lt;br /&gt;
Chose assez peu connue, cependant, le système de fichiers &#039;&#039;reiserfs&#039;&#039; peut respecter les attributs étendus, à condition d&#039;[[fstab|être monté]] avec l&#039;option idoine &amp;lt;code&amp;gt;attrs&amp;lt;/code&amp;gt;. Pour ce faire, les commandes suivantes sont appliquées : &lt;br /&gt;
* sur une partition non encore montée : &amp;lt;code&amp;gt;mount -t reiserfs -o attrs /dev/partition /point/de/montage&amp;lt;/code&amp;gt; ; &lt;br /&gt;
* sur une partition déjà montée : &amp;lt;code&amp;gt;mount -o attrs /point/de/montage&amp;lt;/code&amp;gt; (remontage à la volée).&lt;br /&gt;
&lt;br /&gt;
Pour que la prise en compte soit effective à chaque montage automatique (le cas échéant), il faut ajouter l&#039;option dans &#039;&#039;[[fstab|/etc/fstab]]&#039;&#039;. Par exemple : &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
/dev/hda1       /               reiserfs    defaults,acl,attrs 0       1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enfin, on peut recompiler son noyau avec l&#039;option &amp;lt;code&amp;gt;CONFIG_REISERFS_FS_XATTR = y&amp;lt;/code&amp;gt; pour que le mode &amp;lt;code&amp;gt;attr&amp;lt;/code&amp;gt; soit automatiquement appliqué lors du montage d&#039;une partition en &#039;&#039;reiserfs&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cadre type=&amp;quot;warning&amp;quot;&amp;gt;Noter que des fichiers d&#039;une partition en &#039;&#039;reiserfs&#039;&#039; montée sans l&#039;option &amp;lt;code&amp;gt;attrs&amp;lt;/code&amp;gt; (ou la recompilation du noyau) peuvent recevoir des attributs étendus : ils seront bien enregistrés mais n&#039;auront aucun effet. La commande de modification d&#039;attributs, &#039;&#039;chattr&#039;&#039;, ne renverra donc aucun message d&#039;erreur sans pour autant que les attributs soient pris en compte. Ce détail peut avoir des répercussion pour la sécurité du système : on peut, à tort, croire protéger des fichiers.&amp;lt;/cadre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Types d&#039;attributs==&lt;br /&gt;
Selon la norme POSIX.1, tout fichier possède les permissions en lecture, écriture et exécution. On peut leur adjoindre des attributs supplémentaires, qui s&#039;imposent à tous les utilisateurs hormis root quand ils modifient les actions qu&#039;on peut avoir sur eux. Certains attributs sont actuellement expérimentaux (octobre 2005) et nécessitent de patcher le noyau pour qu&#039;ils aient un effet réel. &lt;br /&gt;
&lt;br /&gt;
;append only (a), « ajouter seulement » ─ &#039;&#039;&#039;réservé à root&#039;&#039;&#039;&lt;br /&gt;
:Protège le fichier contre la suppression de contenu : on ne peut que lui en ajouter. &lt;br /&gt;
;compressed (c), « compresser » ─ &#039;&#039;&#039;expérimental&#039;&#039;&#039;&lt;br /&gt;
:Le fichier est automatiquement compressé ─ si c&#039;est utile, et avec un format de compression le plus efficace ─ quand il est stocké. La décompression lors de la lecture et la compression des données ajoutées au fichier par la suite se font à la volée, de manière transparente pour l&#039;utilisateur (la commande &amp;lt;code&amp;gt;ls -l&amp;lt;/code&amp;gt;, par exemple, montre la taille décompressée). &lt;br /&gt;
:Cet attribut appliqué à un répertoire ne le compresse pas mais fait se compresser automatiquement tout nouveau fichier qu&#039;on y crée.&lt;br /&gt;
;no dump (d), « pas de sauvegarde »&lt;br /&gt;
:Un fichier ainsi marqué sera ignoré par la commande &#039;&#039;dump&#039;&#039;.&lt;br /&gt;
;immutable (i), « immuable » ─ &#039;&#039;&#039;réservé à root&#039;&#039;&#039;&lt;br /&gt;
:Protège le fichier contre toute modification (suppression, modification, déplacement, changements de permissions), même par root, et empêche qu&#039;on crée un lien vers lui. Seule la modification des attributs étendus est permise à son propriétaire et seul root peut enlever l&#039;attribut « immuable » d&#039;un fichier.&lt;br /&gt;
:Cet attribut est sans doute l&#039;un des plus intéressants.&lt;br /&gt;
;data journalling (j), « journalisation des données » ─ &#039;&#039;&#039;réservé à root&#039;&#039;&#039;&lt;br /&gt;
:Cet attribut n&#039;est utile qu&#039;avec une partition en &#039;&#039;ext3&#039;&#039; montée avec les options de journalisation des données &amp;lt;code&amp;gt;data=ordered&amp;lt;/code&amp;gt; (montage par défaut) ou &amp;lt;code&amp;gt;data=writeback&amp;lt;/code&amp;gt; pour simuler une journalisation du type &amp;lt;code&amp;gt;data=journal&amp;lt;/code&amp;gt;, où les données sont écrites dans le journal avant de l&#039;être dans le fichier lui-même. Consulter &amp;lt;code&amp;gt;man mount 8&amp;lt;/code&amp;gt; pour plus de détails sur les mécanismes de journalisation d&#039;&#039;&#039;ext3&#039;&#039;. &lt;br /&gt;
:Sur une partition &#039;&#039;ext3&#039;&#039; en mode &amp;lt;code&amp;gt;data=journal&amp;lt;/code&amp;gt;, cet attribut est ignoré, de même que sur les partitions en &#039;&#039;ext2&#039;&#039; et &#039;&#039;reiserfs&#039;&#039;, le premier type n&#039;étant pas journalisé, le second l&#039;étant d&#039;une manière incompatible.&lt;br /&gt;
;secure deletion (s), « effacement sécurisé »  ─ &#039;&#039;&#039;expérimental&#039;&#039;&#039;&lt;br /&gt;
:&lt;br /&gt;
;no tail-merging (t)&lt;br /&gt;
;undeletable (u) ─ &#039;&#039;&#039;experimental&#039;&#039;&#039;&lt;br /&gt;
;no atime updates (A)&lt;br /&gt;
;synchronous directory updates (D)&lt;br /&gt;
;synchronous updates (S)&lt;br /&gt;
;top of directory hierarchy (T).&lt;br /&gt;
&lt;br /&gt;
==Commande==&lt;br /&gt;
lschattr, chattr&lt;br /&gt;
e2fsprogs&lt;br /&gt;
&amp;lt;!-- The  ‘c’,  ’s’,   and  ‘u’  attributes  are  not  honored by the ext2 and ext3 filesystems as implemented in the current mainline Linux kernels. These attributes may be implemented in future versions ext2 and ext3. The ‘j’ option is only useful if the filesystem is mounted as ext3. The ‘D’ option is only useful on Linux kernel 2.5.19 and later.&lt;br /&gt;
&lt;br /&gt;
{{Copy|28.10.05|Vincent Ramos|FDL}}&lt;/div&gt;</summary>
		<author><name>Vincent Ramos</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Attributs_%C3%A9tendus&amp;diff=10083</id>
		<title>Attributs étendus</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Attributs_%C3%A9tendus&amp;diff=10083"/>
		<updated>2005-10-26T23:41:58Z</updated>

		<summary type="html">&lt;p&gt;Vincent Ramos : Début&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Les [[système de fichiers|systèmes de fichiers]] &#039;&#039;ext2&#039;&#039; et &#039;&#039;ext3&#039;&#039; offrent la possibilité de donner à des fichiers (fichiers réels ou répertoires) des &#039;&#039;&#039;attributs étendus&#039;&#039;&#039; qui s&#039;ajoutent aux [[permissions|permissions classiques POSIX.1]], éventuellement complétées par les [[ACL|permissions étendues ACL]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cadre type=&amp;quot;warning&amp;quot;&amp;gt;Seuls ces systèmes de fichiers offrant ces attributs, il n&#039;est pas prudent ─ en terme de sécurité ─ de s&#039;appuyer lourdement sur leur présence si l&#039;on est amené à transférer fréquemment des données d&#039;un système de fichiers &#039;&#039;ext&#039;&#039; à un autre.&amp;lt;/cadre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vincent Ramos</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Les_permissions_sur_les_fichiers&amp;diff=10082</id>
		<title>Les permissions sur les fichiers</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Les_permissions_sur_les_fichiers&amp;diff=10082"/>
		<updated>2005-10-26T23:32:56Z</updated>

		<summary type="html">&lt;p&gt;Vincent Ramos : /* Attributs étendus */ lien&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Environnement système]]&lt;br /&gt;
= Les permissions sur les fichiers =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;leatitre&amp;quot;&amp;gt;Les permissions sur les fichiers&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;leapar&amp;quot;&amp;gt;par Jean-Christophe&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;leadesc&amp;quot;&amp;gt;Dis Papa, c&#039;est quoi &amp;lt;code&amp;gt;rwxr-xr-x&amp;lt;/code&amp;gt; ? Tais-toi et nage !&amp;lt;/div&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Un peu de théorie ==&lt;br /&gt;
&lt;br /&gt;
Dans ce chapitre, nous allons étudier les &#039;&#039;&#039;permissions sur les fichiers&#039;&#039;&#039;. Nous allons voir rapidement sur quoi la gestion des permissions se base.&lt;br /&gt;
&lt;br /&gt;
=== Les utilisateurs et les groupes ===&lt;br /&gt;
&lt;br /&gt;
Les fichiers appartiennent à un &#039;&#039;&#039;&#039;&#039;utilisateur&#039;&#039;&#039;&#039;&#039; à l&#039;intérieur d&#039;un &#039;&#039;&#039;&#039;&#039;groupe d&#039;utilisateurs&#039;&#039;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
* L&#039;&#039;&#039;utilisateur&#039;&#039;, c&#039;est vous ! C&#039;est un identifiant avec un mot de passe, qui sont définis dans le fichier &amp;lt;code&amp;gt;/etc/passwd&amp;lt;/code&amp;gt;. On peut ajouter des utilisateurs à l&#039;aide de la commande &amp;lt;code&amp;gt;useradd&amp;lt;/code&amp;gt; ou &amp;lt;code&amp;gt;adduser&amp;lt;/code&amp;gt; (voir &amp;lt;code&amp;gt;man adduser&amp;lt;/code&amp;gt;). Certaines distributions fournissent des outils graphiques pour ce faire, comme &amp;lt;code&amp;gt;drakuser&amp;lt;/code&amp;gt; de Mandrake.&lt;br /&gt;
* Le &#039;&#039;groupe d&#039;utilisateurs&#039;&#039;, défini dans le fichier &amp;lt;code&amp;gt;/etc/group&amp;lt;/code&amp;gt;, permet de regrouper des utilisateurs dans des groupes (un même utilisateur peut faire partie de plusieurs groupes) afin par exemple de partager des permissions entre plusieurs utilisateurs. Par exemple, le groupe &amp;lt;code&amp;gt;quakeusers&amp;lt;/code&amp;gt; peut être défini afin d&#039;y placer les utilisateurs qui auront le droit d&#039;utiliser le jeu Quake : on donnera par exemple la permission aux membres de ce groupe de lancer l&#039;exécutable de ce jeu. De même, le groupe &amp;lt;code&amp;gt;cdrecording&amp;lt;/code&amp;gt; aura les droits d&#039;utiliser le graveur de CD.&lt;br /&gt;
&lt;br /&gt;
=== Les droits possibles : R, W et X ===&lt;br /&gt;
&lt;br /&gt;
Les droits que l&#039;on peut attribuer à un fichier concernent :&lt;br /&gt;
&lt;br /&gt;
* la lecture (&#039;&#039;&#039;&amp;lt;code&amp;gt;r&amp;lt;/code&amp;gt;&#039;&#039;&#039; comme read),&lt;br /&gt;
* l&#039;écriture (&#039;&#039;&#039;&amp;lt;code&amp;gt;w&amp;lt;/code&amp;gt;&#039;&#039;&#039; comme write),&lt;br /&gt;
* l&#039;exécution (&#039;&#039;&#039;&amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt;&#039;&#039;&#039; comme execute).&lt;br /&gt;
&lt;br /&gt;
On peut attribuer ces droits pour :&lt;br /&gt;
&lt;br /&gt;
* un utilisateur,&lt;br /&gt;
* les membres d&#039;un groupe,&lt;br /&gt;
* le monde entier (i.e. les autres utilisateurs).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Visualiser/modifier les permissions ==&lt;br /&gt;
&lt;br /&gt;
=== Ligne de commande ===&lt;br /&gt;
&lt;br /&gt;
En ligne de commande (voir la rubrique [shell.php3 Shell]), tapez :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;[username@taz username]$ &#039;&#039;&#039;ls -la&#039;&#039;&#039;&amp;lt;br /&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;total 144 &amp;lt;br /&amp;gt; drwxr-xr-x   18 username     users        2048 jan  7 19:22 . &amp;lt;br /&amp;gt; drwxr-xr-x    7 root     root         1024 fév  6  1996 .. &amp;lt;br /&amp;gt; -rw-------    1 username     users         147 jan  7 19:22 .Xauthority &amp;lt;br /&amp;gt; -rw-r--r--    1 username     users        1899 jui 28 21:01 .Xdefaults &amp;lt;br /&amp;gt; -rw-------    1 username     users        5860 jan  7 19:22 .bash_history &amp;lt;br /&amp;gt; -rw-r--r--    1 username     users          24 jui 28 21:01 .bash_logout &amp;lt;br /&amp;gt; -rw-r--r--    1 username     users         262 jui 29 18:15 .bash_profile &amp;lt;br /&amp;gt; -rw-r--r--    1 username     users         434 jui 28 21:01 .bashrc &amp;lt;br /&amp;gt; -rw-r--r--    1 username     users        2626 jui 28 21:01 .emacs &amp;lt;br /&amp;gt; -rw-r--r--    1 username     users         532 jui 28 21:01 .inputrc &amp;lt;br /&amp;gt; drwxr-xr-x    3 username     users        1024 jui 28 21:01 .kde &amp;lt;br /&amp;gt; -rw-r--r--    1 username     users        1546 jan  7 19:04 .kderc &amp;lt;br /&amp;gt; -rwxr-xr-x    1 username     users        1166 jui 28 21:01 .kderc.rpmorig&amp;lt;/font&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour une explication détaillée des différentes colonnes, voir la rubrique [shell.php3#ls Shell]. Nous n&#039;allons ici nous intéresser qu&#039;aux éléments relatifs aux permissions.&lt;br /&gt;
&lt;br /&gt;
1. La première colonne -rw-r--r-- représente les permissions associées au fichier. &amp;lt;br /&amp;gt;&#039;&#039;(le premier caractère est le type du fichier fichier : un d pour un répertoire, un l pour un lien, etc.)&#039;&#039;&amp;lt;br /&amp;gt; Ensuite, on a trois groupes de trois caractères : &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;font size=&amp;quot;+1&amp;quot;&amp;gt;rwx&amp;lt;/font&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039;. La présence de la lettre r w ou x accorde la permission, un tiret &#039;-&#039; la dénie.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;code&amp;gt;r&amp;lt;/code&amp;gt;&#039;&#039;&#039; signifie : possibilité de lire ce fichier / dans ce répertoire, &amp;lt;br /&amp;gt;&#039;&#039;&#039;&amp;lt;code&amp;gt;w&amp;lt;/code&amp;gt;&#039;&#039;&#039; signifie : possibilité d&#039;écrire dans ce fichier / répertoire, &amp;lt;br /&amp;gt;&#039;&#039;&#039;&amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt;&#039;&#039;&#039; signifie : possibilité d&#039;exécuter ce fichier / d&#039;aller dans ce répertoire.&lt;br /&gt;
&lt;br /&gt;
Les trois groupes de caractère s&#039;appliquent, dans l&#039;ordre, à :&lt;br /&gt;
&lt;br /&gt;
# l&#039;utilisateur auquel appartient le fichier,&lt;br /&gt;
# le groupe d&#039;utilisateurs auquel est rattaché le fichier,&lt;br /&gt;
# les autres utilisateurs.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| &amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;r w x&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;r - x&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;r - x&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| utili-&amp;lt;br /&amp;gt;sateur&lt;br /&gt;
| groupe&lt;br /&gt;
| autres&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
2. La 3&amp;lt;sup&amp;gt;ème&amp;lt;/sup&amp;gt; colonne est l&#039;utilisateur à qui appartient le fichier. À cet utilisateur s&#039;appliquent les permissions représentées par les trois premiers caractères de permissions de la première colonne (&amp;lt;code&amp;gt;-&#039;&#039;&#039;&amp;lt;font size=&amp;quot;+1&amp;quot;&amp;gt;rwx&amp;lt;/font&amp;gt;&#039;&#039;&#039;r-xr-x&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
3. La 4&amp;lt;sup&amp;gt;ème&amp;lt;/sup&amp;gt; colonne est le groupe d&#039;utilisateurs auquel appartient le fichier. A ce groupe s&#039;appliquent les permissions représentées par le deuxième groupe de trois caractères de permissions de la première colonne (&amp;lt;code&amp;gt;-rwx&#039;&#039;&#039;&amp;lt;font size=&amp;quot;+1&amp;quot;&amp;gt;r-x&amp;lt;/font&amp;gt;&#039;&#039;&#039;r-x&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;font size=&amp;quot;+1&amp;quot;&amp;gt;Exemples :&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;br /&amp;gt; 1. La ligne suivante : &amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;drwxr-xr-x  18  username  users   2048 jan  7 19:22 .&amp;lt;/font&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt; signifie pour le répertoire &#039;.&#039; (le répertoire HOME de l&#039;utilisateur username) que tout le monde a le droit de lire le contenu du répertoire (le dernier &#039;r&#039;), et que tout le monde peut y accéder (le dernier &#039;x&#039;). Par contre, seul l&#039;utilisateur username peut y écrire (caractère &#039;w&#039;), c&#039;est à dire y créer des fichiers, les modifier ou les supprimer.&lt;br /&gt;
&lt;br /&gt;
2. La ligne : &amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;-rw-r-----   1  username  wwwadm  1728 jan  7 19:22 projet-www&amp;lt;/font&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt; signifie que seul &#039;username&#039; et les utilisateurs du groupe &#039;wwwadm&#039; peuvent lire ce fichier, que seule username peut le modifier, et que les autres utilisateurs n&#039;ont aucun droit dessus (le dernier groupe de caractères &#039;---&#039;).&lt;br /&gt;
&lt;br /&gt;
== Modification ==&lt;br /&gt;
&lt;br /&gt;
=== Les droits : &amp;lt;code&amp;gt;chmod&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
Il existe deux façon de changer les droits d&#039;un fichier ou répertoire.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Soit en précisant les droits en octal (base 8)&#039;&#039;&#039;. La correspondance est la suivante :&lt;br /&gt;
** 1 : droit d&#039;exécution ;&lt;br /&gt;
** 2 : droit d&#039;écriture ;&lt;br /&gt;
** 4 : droit de lecture.&lt;br /&gt;
Donc, pour préciser les droits en exécution et lecture, le chiffre octal est : 1 + 4 = 5. Pour préciser les droits en éxécution, écriture et lecture, le chiffre octal est : 1 + 2 + 4 = 7.&lt;br /&gt;
Ensuite, il faut savoir que le chiffre des unités (en octal) correspond &#039;au reste du monde&#039; que le chiffre des &#039;huitaines&#039; (deuxième chiffre en octal) correspond &#039;au groupe&#039; et que le chiffre des &#039;soixante-quatraines&#039; (troisième chiffre en octal) correspond &#039;à l&#039;utilisateur&#039;. Ainsi, si on veut que l&#039;utilisateur ait les 3 droits (rwx), que le groupe ait les 2 droits (r-x) et que le reste du monde n&#039;ai aucun droit (---), le nombre octal est : 750 (7 = 1 + 2 + 4 ; 5 = 1 + 4 ; 0 = 0). Pour donner ces droits à un fichier on tape alors :&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt; [username@localhost ~] $ chmod 0750 /chemin/vers/fichier &amp;lt;/div&amp;gt;&lt;br /&gt;
Le premier 0 dans 0750 signifie qu&#039;on donne le nombre en octal (son absence ne modifie pas le comportement de chmod).&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Soit en précisant les droits qu&#039;on ajoute (+) ou soustrait (-) au fichier (ou répertoire).&#039;&#039;&#039; Pour ajouter des droits à l&#039;utilisateur, on ajoute un droit (r,w, x ou toute combinaison des 3) à &#039;u&#039;. Par exemple : &amp;lt;code&amp;gt;u+rw&amp;lt;/code&amp;gt; signifie qu&#039;on ajoute les droit de lecteur et d&#039;écriture à l&#039;utilisateur. Pour le groupe, on ajoute ou soustrait à &#039;g&#039; et pour le reste du monde on ajoute ou soustrait à &#039;o&#039; (other). Par exemple pour ajouter les droits de lecture et d&#039;écriture à l&#039;utilisateur on tapera :&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt; [username@localhost ~] $ chmod u+rw /chemin/vers/fichier &amp;lt;/div&amp;gt;&lt;br /&gt;
Et :&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt; [username@localhost ~] $ chmod go-rwx /chemin/vers/fichier &amp;lt;/div&amp;gt;&lt;br /&gt;
Pour retirer tous les droits (rwx) au groupe (g) et aux autres (a).&lt;br /&gt;
&amp;lt;div class=&amp;quot;note&amp;quot;&amp;gt;Remarque : à la place de u, g et o on peut utiliser &#039;a&#039; (all) qui veut dire qu&#039;on change les droits de tout le monde (utilisateur, groupe et reste du monde).&amp;lt;/div&amp;gt;&lt;br /&gt;
Il faut savoir que la commande peut s&#039;appliquer de manière récursive (c&#039;est bien pratique pour les répertoires), en lui passant l&#039;argument &#039;-R&#039; et qu&#039;à la place du droit &#039;x&#039;, on peut présiser &#039;X&#039; (majuscule) ce qui signifie que parmi les fichiers et répertoires dont on modifiera les droits d&#039;exécution, seuls les répertoires sont concernés. Ainsi :&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt; [username@localhost ~] $ chmod -R u+rwX /chemin/vers/repertoire &amp;lt;/div&amp;gt;&lt;br /&gt;
rendra tous les fichiers contenus dans ce répertoire (ainsi que dans tous les sous-répertoires de celui-ci) lisibles et écrivables et que tous les sous-répertoires (et leurs sous-répertoires) seront &#039;navigables&#039; (le droit d&#039;exécution pour un répertoire autorise à se rendre dans le dit répertoire).&lt;br /&gt;
&lt;br /&gt;
=== La propriété : &amp;lt;code&amp;gt;chown&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
Les droits de propriétés sont très simples à modifier. Il suffit de donner le nom du nouveau possesseur (et éventuellement le nom du nouveau groupe) et le nom du fichier. Ainsi :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt; [username@localhost ~] $ chown username /chemin/vers/fichier &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donne le fichier &amp;lt;code&amp;gt;/chemin/vers/fichier&amp;lt;/code&amp;gt; à l&#039;utilisateur &#039;username&#039;. Et :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt; [username@localhost ~] $ chown username.groupe /chemin/vers/fichier &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donne le fichier &amp;lt;code&amp;gt;/chemin/vers/fichier&amp;lt;/code&amp;gt; à l&#039;utilisateur &#039;username&#039; et au groupe &#039;groupe&#039;. Comme pour &amp;lt;code&amp;gt;chmod&amp;lt;/code&amp;gt; le paramétre &#039;-R&#039; permet de rendre récursive l&#039;application de la nouvelle propriété (i.e. répertoires et sous-répertoires).&lt;br /&gt;
&lt;br /&gt;
=== Le groupe : &amp;lt;code&amp;gt;chgrp&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
Le changement de groupe uniquement peut être obtenu par :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt; [username@localhost ~] $ chgrp groupe /chemin/vers/fichier &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
qui donne &amp;lt;code&amp;gt;/chemin/vers/fichier&amp;lt;/code&amp;gt; au groupe &#039;groupe&#039;. L&#039;argument &#039;-R&#039; rend cette application récursive.&lt;br /&gt;
&lt;br /&gt;
=== Interface graphique ===&lt;br /&gt;
&lt;br /&gt;
Dans votre gestionnaire de fichiers préféré, sous KDE ou Gnome par exemple, vous pouvez consulter et modifier les permissions sur un fichier en affichant la boîte de dialogue &amp;quot;Propriétés&amp;quot; du fichier/répertoire (en général par un clic droit).&lt;br /&gt;
&lt;br /&gt;
== Pour aller plus loin... ==&lt;br /&gt;
===SUID et GUID===&lt;br /&gt;
Il existe encore deux types de droits (en fait 3 mais le troisième est devenu obsolète) : &#039;s&#039; (SUID bit) et &#039;g&#039; (SGID bit). Si l&#039;on active le SUID bit d&#039;un programme, il s&#039;exécute sur le compte du possesseur du fichier (si c&#039;est root, sur le compte de root, d&#039;où un danger potentiel de sécurité). Si l&#039;on active le SGID bit, c&#039;est sur le compte de l&#039;utilisateur normal, mais en tant que membre du groupe du fichier. Cela rend un fichier exécutable. &amp;lt;br /&amp;gt;À ce propos consultez l&#039;article [../dev/suid_scripts.php3 SUID Scripts] par Xavier GARREAU sur Léa.&lt;br /&gt;
&lt;br /&gt;
Ces droits s&#039;octroient de la même manière que les autres. Par exemple :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;# chmod +s /usr/bin/xmms&amp;lt;/nowiki&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
fera en sorte que xmms puisse obtenir les privilèges de root (le fichier &amp;lt;code&amp;gt;/usr/bin/xmms&amp;lt;/code&amp;gt; appartenant à root. Un &amp;lt;code&amp;gt;ls -l&amp;lt;/code&amp;gt; sur le fichier donnera ensuite :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;-rw&#039;&#039;&#039;s&#039;&#039;&#039;r-xr--    1 root     root      172812 dec  12 12:12 xmms&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dans ce cas particulier, cela permet à xmms d&#039;obtenir une priorité temps réel qui peut être nécessaire pour un son parfait.&lt;br /&gt;
&lt;br /&gt;
===ACL===&lt;br /&gt;
Les permissions peuvent se montrer limitées et ne permettent pas une gestion fine de certaines situations dans lesquelles un même fichier doit présenter des permissions différentes pour plusieurs utilisateurs. En effet, on ne peut définir normalement qu&#039;un seul propriétaire et un seul groupe, opposés à un unique « tout le monde ».&lt;br /&gt;
&lt;br /&gt;
Les [[ACL]] permettent de dépasser cette limitation en attribuant à un fichier des permissions différentes selon l&#039;utilisateur (rw pour &#039;&#039;utilisateur1&#039;&#039;, rwx pour &#039;&#039;utilisateur2&#039;&#039;, &#039;&#039;r&#039;&#039; pour &#039;&#039;utilisateur3&#039;&#039;, etc.).&lt;br /&gt;
&lt;br /&gt;
Consulter l&#039;article requis pour plus de détails.&lt;br /&gt;
&lt;br /&gt;
===Attributs étendus===&lt;br /&gt;
Les [[systèmes de fichiers]] &#039;&#039;ext2&#039;&#039; et &#039;&#039;ext3&#039;&#039; permettent l&#039;ajout d&#039;[[attributs étendus]] s&#039;apparentant aux permissions.&lt;br /&gt;
&lt;br /&gt;
Consulter l&#039;article requis pour plus de détails.&lt;br /&gt;
&lt;br /&gt;
= Copyright =&lt;br /&gt;
Copyright &amp;amp;copy; 10/01/2000, Jean-Christophe Cardot&lt;br /&gt;
{{CC-BY-NC-SA}}&lt;/div&gt;</summary>
		<author><name>Vincent Ramos</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Les_permissions_sur_les_fichiers&amp;diff=10081</id>
		<title>Les permissions sur les fichiers</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Les_permissions_sur_les_fichiers&amp;diff=10081"/>
		<updated>2005-10-26T23:32:33Z</updated>

		<summary type="html">&lt;p&gt;Vincent Ramos : /* ACL */ ortho&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Environnement système]]&lt;br /&gt;
= Les permissions sur les fichiers =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;leatitre&amp;quot;&amp;gt;Les permissions sur les fichiers&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;leapar&amp;quot;&amp;gt;par Jean-Christophe&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;leadesc&amp;quot;&amp;gt;Dis Papa, c&#039;est quoi &amp;lt;code&amp;gt;rwxr-xr-x&amp;lt;/code&amp;gt; ? Tais-toi et nage !&amp;lt;/div&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Un peu de théorie ==&lt;br /&gt;
&lt;br /&gt;
Dans ce chapitre, nous allons étudier les &#039;&#039;&#039;permissions sur les fichiers&#039;&#039;&#039;. Nous allons voir rapidement sur quoi la gestion des permissions se base.&lt;br /&gt;
&lt;br /&gt;
=== Les utilisateurs et les groupes ===&lt;br /&gt;
&lt;br /&gt;
Les fichiers appartiennent à un &#039;&#039;&#039;&#039;&#039;utilisateur&#039;&#039;&#039;&#039;&#039; à l&#039;intérieur d&#039;un &#039;&#039;&#039;&#039;&#039;groupe d&#039;utilisateurs&#039;&#039;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
* L&#039;&#039;&#039;utilisateur&#039;&#039;, c&#039;est vous ! C&#039;est un identifiant avec un mot de passe, qui sont définis dans le fichier &amp;lt;code&amp;gt;/etc/passwd&amp;lt;/code&amp;gt;. On peut ajouter des utilisateurs à l&#039;aide de la commande &amp;lt;code&amp;gt;useradd&amp;lt;/code&amp;gt; ou &amp;lt;code&amp;gt;adduser&amp;lt;/code&amp;gt; (voir &amp;lt;code&amp;gt;man adduser&amp;lt;/code&amp;gt;). Certaines distributions fournissent des outils graphiques pour ce faire, comme &amp;lt;code&amp;gt;drakuser&amp;lt;/code&amp;gt; de Mandrake.&lt;br /&gt;
* Le &#039;&#039;groupe d&#039;utilisateurs&#039;&#039;, défini dans le fichier &amp;lt;code&amp;gt;/etc/group&amp;lt;/code&amp;gt;, permet de regrouper des utilisateurs dans des groupes (un même utilisateur peut faire partie de plusieurs groupes) afin par exemple de partager des permissions entre plusieurs utilisateurs. Par exemple, le groupe &amp;lt;code&amp;gt;quakeusers&amp;lt;/code&amp;gt; peut être défini afin d&#039;y placer les utilisateurs qui auront le droit d&#039;utiliser le jeu Quake : on donnera par exemple la permission aux membres de ce groupe de lancer l&#039;exécutable de ce jeu. De même, le groupe &amp;lt;code&amp;gt;cdrecording&amp;lt;/code&amp;gt; aura les droits d&#039;utiliser le graveur de CD.&lt;br /&gt;
&lt;br /&gt;
=== Les droits possibles : R, W et X ===&lt;br /&gt;
&lt;br /&gt;
Les droits que l&#039;on peut attribuer à un fichier concernent :&lt;br /&gt;
&lt;br /&gt;
* la lecture (&#039;&#039;&#039;&amp;lt;code&amp;gt;r&amp;lt;/code&amp;gt;&#039;&#039;&#039; comme read),&lt;br /&gt;
* l&#039;écriture (&#039;&#039;&#039;&amp;lt;code&amp;gt;w&amp;lt;/code&amp;gt;&#039;&#039;&#039; comme write),&lt;br /&gt;
* l&#039;exécution (&#039;&#039;&#039;&amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt;&#039;&#039;&#039; comme execute).&lt;br /&gt;
&lt;br /&gt;
On peut attribuer ces droits pour :&lt;br /&gt;
&lt;br /&gt;
* un utilisateur,&lt;br /&gt;
* les membres d&#039;un groupe,&lt;br /&gt;
* le monde entier (i.e. les autres utilisateurs).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Visualiser/modifier les permissions ==&lt;br /&gt;
&lt;br /&gt;
=== Ligne de commande ===&lt;br /&gt;
&lt;br /&gt;
En ligne de commande (voir la rubrique [shell.php3 Shell]), tapez :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;[username@taz username]$ &#039;&#039;&#039;ls -la&#039;&#039;&#039;&amp;lt;br /&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;total 144 &amp;lt;br /&amp;gt; drwxr-xr-x   18 username     users        2048 jan  7 19:22 . &amp;lt;br /&amp;gt; drwxr-xr-x    7 root     root         1024 fév  6  1996 .. &amp;lt;br /&amp;gt; -rw-------    1 username     users         147 jan  7 19:22 .Xauthority &amp;lt;br /&amp;gt; -rw-r--r--    1 username     users        1899 jui 28 21:01 .Xdefaults &amp;lt;br /&amp;gt; -rw-------    1 username     users        5860 jan  7 19:22 .bash_history &amp;lt;br /&amp;gt; -rw-r--r--    1 username     users          24 jui 28 21:01 .bash_logout &amp;lt;br /&amp;gt; -rw-r--r--    1 username     users         262 jui 29 18:15 .bash_profile &amp;lt;br /&amp;gt; -rw-r--r--    1 username     users         434 jui 28 21:01 .bashrc &amp;lt;br /&amp;gt; -rw-r--r--    1 username     users        2626 jui 28 21:01 .emacs &amp;lt;br /&amp;gt; -rw-r--r--    1 username     users         532 jui 28 21:01 .inputrc &amp;lt;br /&amp;gt; drwxr-xr-x    3 username     users        1024 jui 28 21:01 .kde &amp;lt;br /&amp;gt; -rw-r--r--    1 username     users        1546 jan  7 19:04 .kderc &amp;lt;br /&amp;gt; -rwxr-xr-x    1 username     users        1166 jui 28 21:01 .kderc.rpmorig&amp;lt;/font&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour une explication détaillée des différentes colonnes, voir la rubrique [shell.php3#ls Shell]. Nous n&#039;allons ici nous intéresser qu&#039;aux éléments relatifs aux permissions.&lt;br /&gt;
&lt;br /&gt;
1. La première colonne -rw-r--r-- représente les permissions associées au fichier. &amp;lt;br /&amp;gt;&#039;&#039;(le premier caractère est le type du fichier fichier : un d pour un répertoire, un l pour un lien, etc.)&#039;&#039;&amp;lt;br /&amp;gt; Ensuite, on a trois groupes de trois caractères : &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;lt;font size=&amp;quot;+1&amp;quot;&amp;gt;rwx&amp;lt;/font&amp;gt;&amp;lt;/code&amp;gt;&#039;&#039;&#039;. La présence de la lettre r w ou x accorde la permission, un tiret &#039;-&#039; la dénie.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;code&amp;gt;r&amp;lt;/code&amp;gt;&#039;&#039;&#039; signifie : possibilité de lire ce fichier / dans ce répertoire, &amp;lt;br /&amp;gt;&#039;&#039;&#039;&amp;lt;code&amp;gt;w&amp;lt;/code&amp;gt;&#039;&#039;&#039; signifie : possibilité d&#039;écrire dans ce fichier / répertoire, &amp;lt;br /&amp;gt;&#039;&#039;&#039;&amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt;&#039;&#039;&#039; signifie : possibilité d&#039;exécuter ce fichier / d&#039;aller dans ce répertoire.&lt;br /&gt;
&lt;br /&gt;
Les trois groupes de caractère s&#039;appliquent, dans l&#039;ordre, à :&lt;br /&gt;
&lt;br /&gt;
# l&#039;utilisateur auquel appartient le fichier,&lt;br /&gt;
# le groupe d&#039;utilisateurs auquel est rattaché le fichier,&lt;br /&gt;
# les autres utilisateurs.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| &amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;r w x&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;r - x&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;r - x&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| utili-&amp;lt;br /&amp;gt;sateur&lt;br /&gt;
| groupe&lt;br /&gt;
| autres&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
2. La 3&amp;lt;sup&amp;gt;ème&amp;lt;/sup&amp;gt; colonne est l&#039;utilisateur à qui appartient le fichier. À cet utilisateur s&#039;appliquent les permissions représentées par les trois premiers caractères de permissions de la première colonne (&amp;lt;code&amp;gt;-&#039;&#039;&#039;&amp;lt;font size=&amp;quot;+1&amp;quot;&amp;gt;rwx&amp;lt;/font&amp;gt;&#039;&#039;&#039;r-xr-x&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
3. La 4&amp;lt;sup&amp;gt;ème&amp;lt;/sup&amp;gt; colonne est le groupe d&#039;utilisateurs auquel appartient le fichier. A ce groupe s&#039;appliquent les permissions représentées par le deuxième groupe de trois caractères de permissions de la première colonne (&amp;lt;code&amp;gt;-rwx&#039;&#039;&#039;&amp;lt;font size=&amp;quot;+1&amp;quot;&amp;gt;r-x&amp;lt;/font&amp;gt;&#039;&#039;&#039;r-x&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;font size=&amp;quot;+1&amp;quot;&amp;gt;Exemples :&amp;lt;/font&amp;gt;&#039;&#039;&#039;&amp;lt;br /&amp;gt; 1. La ligne suivante : &amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;drwxr-xr-x  18  username  users   2048 jan  7 19:22 .&amp;lt;/font&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt; signifie pour le répertoire &#039;.&#039; (le répertoire HOME de l&#039;utilisateur username) que tout le monde a le droit de lire le contenu du répertoire (le dernier &#039;r&#039;), et que tout le monde peut y accéder (le dernier &#039;x&#039;). Par contre, seul l&#039;utilisateur username peut y écrire (caractère &#039;w&#039;), c&#039;est à dire y créer des fichiers, les modifier ou les supprimer.&lt;br /&gt;
&lt;br /&gt;
2. La ligne : &amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;-rw-r-----   1  username  wwwadm  1728 jan  7 19:22 projet-www&amp;lt;/font&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt; signifie que seul &#039;username&#039; et les utilisateurs du groupe &#039;wwwadm&#039; peuvent lire ce fichier, que seule username peut le modifier, et que les autres utilisateurs n&#039;ont aucun droit dessus (le dernier groupe de caractères &#039;---&#039;).&lt;br /&gt;
&lt;br /&gt;
== Modification ==&lt;br /&gt;
&lt;br /&gt;
=== Les droits : &amp;lt;code&amp;gt;chmod&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
Il existe deux façon de changer les droits d&#039;un fichier ou répertoire.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Soit en précisant les droits en octal (base 8)&#039;&#039;&#039;. La correspondance est la suivante :&lt;br /&gt;
** 1 : droit d&#039;exécution ;&lt;br /&gt;
** 2 : droit d&#039;écriture ;&lt;br /&gt;
** 4 : droit de lecture.&lt;br /&gt;
Donc, pour préciser les droits en exécution et lecture, le chiffre octal est : 1 + 4 = 5. Pour préciser les droits en éxécution, écriture et lecture, le chiffre octal est : 1 + 2 + 4 = 7.&lt;br /&gt;
Ensuite, il faut savoir que le chiffre des unités (en octal) correspond &#039;au reste du monde&#039; que le chiffre des &#039;huitaines&#039; (deuxième chiffre en octal) correspond &#039;au groupe&#039; et que le chiffre des &#039;soixante-quatraines&#039; (troisième chiffre en octal) correspond &#039;à l&#039;utilisateur&#039;. Ainsi, si on veut que l&#039;utilisateur ait les 3 droits (rwx), que le groupe ait les 2 droits (r-x) et que le reste du monde n&#039;ai aucun droit (---), le nombre octal est : 750 (7 = 1 + 2 + 4 ; 5 = 1 + 4 ; 0 = 0). Pour donner ces droits à un fichier on tape alors :&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt; [username@localhost ~] $ chmod 0750 /chemin/vers/fichier &amp;lt;/div&amp;gt;&lt;br /&gt;
Le premier 0 dans 0750 signifie qu&#039;on donne le nombre en octal (son absence ne modifie pas le comportement de chmod).&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Soit en précisant les droits qu&#039;on ajoute (+) ou soustrait (-) au fichier (ou répertoire).&#039;&#039;&#039; Pour ajouter des droits à l&#039;utilisateur, on ajoute un droit (r,w, x ou toute combinaison des 3) à &#039;u&#039;. Par exemple : &amp;lt;code&amp;gt;u+rw&amp;lt;/code&amp;gt; signifie qu&#039;on ajoute les droit de lecteur et d&#039;écriture à l&#039;utilisateur. Pour le groupe, on ajoute ou soustrait à &#039;g&#039; et pour le reste du monde on ajoute ou soustrait à &#039;o&#039; (other). Par exemple pour ajouter les droits de lecture et d&#039;écriture à l&#039;utilisateur on tapera :&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt; [username@localhost ~] $ chmod u+rw /chemin/vers/fichier &amp;lt;/div&amp;gt;&lt;br /&gt;
Et :&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt; [username@localhost ~] $ chmod go-rwx /chemin/vers/fichier &amp;lt;/div&amp;gt;&lt;br /&gt;
Pour retirer tous les droits (rwx) au groupe (g) et aux autres (a).&lt;br /&gt;
&amp;lt;div class=&amp;quot;note&amp;quot;&amp;gt;Remarque : à la place de u, g et o on peut utiliser &#039;a&#039; (all) qui veut dire qu&#039;on change les droits de tout le monde (utilisateur, groupe et reste du monde).&amp;lt;/div&amp;gt;&lt;br /&gt;
Il faut savoir que la commande peut s&#039;appliquer de manière récursive (c&#039;est bien pratique pour les répertoires), en lui passant l&#039;argument &#039;-R&#039; et qu&#039;à la place du droit &#039;x&#039;, on peut présiser &#039;X&#039; (majuscule) ce qui signifie que parmi les fichiers et répertoires dont on modifiera les droits d&#039;exécution, seuls les répertoires sont concernés. Ainsi :&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt; [username@localhost ~] $ chmod -R u+rwX /chemin/vers/repertoire &amp;lt;/div&amp;gt;&lt;br /&gt;
rendra tous les fichiers contenus dans ce répertoire (ainsi que dans tous les sous-répertoires de celui-ci) lisibles et écrivables et que tous les sous-répertoires (et leurs sous-répertoires) seront &#039;navigables&#039; (le droit d&#039;exécution pour un répertoire autorise à se rendre dans le dit répertoire).&lt;br /&gt;
&lt;br /&gt;
=== La propriété : &amp;lt;code&amp;gt;chown&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
Les droits de propriétés sont très simples à modifier. Il suffit de donner le nom du nouveau possesseur (et éventuellement le nom du nouveau groupe) et le nom du fichier. Ainsi :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt; [username@localhost ~] $ chown username /chemin/vers/fichier &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donne le fichier &amp;lt;code&amp;gt;/chemin/vers/fichier&amp;lt;/code&amp;gt; à l&#039;utilisateur &#039;username&#039;. Et :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt; [username@localhost ~] $ chown username.groupe /chemin/vers/fichier &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donne le fichier &amp;lt;code&amp;gt;/chemin/vers/fichier&amp;lt;/code&amp;gt; à l&#039;utilisateur &#039;username&#039; et au groupe &#039;groupe&#039;. Comme pour &amp;lt;code&amp;gt;chmod&amp;lt;/code&amp;gt; le paramétre &#039;-R&#039; permet de rendre récursive l&#039;application de la nouvelle propriété (i.e. répertoires et sous-répertoires).&lt;br /&gt;
&lt;br /&gt;
=== Le groupe : &amp;lt;code&amp;gt;chgrp&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
Le changement de groupe uniquement peut être obtenu par :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt; [username@localhost ~] $ chgrp groupe /chemin/vers/fichier &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
qui donne &amp;lt;code&amp;gt;/chemin/vers/fichier&amp;lt;/code&amp;gt; au groupe &#039;groupe&#039;. L&#039;argument &#039;-R&#039; rend cette application récursive.&lt;br /&gt;
&lt;br /&gt;
=== Interface graphique ===&lt;br /&gt;
&lt;br /&gt;
Dans votre gestionnaire de fichiers préféré, sous KDE ou Gnome par exemple, vous pouvez consulter et modifier les permissions sur un fichier en affichant la boîte de dialogue &amp;quot;Propriétés&amp;quot; du fichier/répertoire (en général par un clic droit).&lt;br /&gt;
&lt;br /&gt;
== Pour aller plus loin... ==&lt;br /&gt;
===SUID et GUID===&lt;br /&gt;
Il existe encore deux types de droits (en fait 3 mais le troisième est devenu obsolète) : &#039;s&#039; (SUID bit) et &#039;g&#039; (SGID bit). Si l&#039;on active le SUID bit d&#039;un programme, il s&#039;exécute sur le compte du possesseur du fichier (si c&#039;est root, sur le compte de root, d&#039;où un danger potentiel de sécurité). Si l&#039;on active le SGID bit, c&#039;est sur le compte de l&#039;utilisateur normal, mais en tant que membre du groupe du fichier. Cela rend un fichier exécutable. &amp;lt;br /&amp;gt;À ce propos consultez l&#039;article [../dev/suid_scripts.php3 SUID Scripts] par Xavier GARREAU sur Léa.&lt;br /&gt;
&lt;br /&gt;
Ces droits s&#039;octroient de la même manière que les autres. Par exemple :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;# chmod +s /usr/bin/xmms&amp;lt;/nowiki&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
fera en sorte que xmms puisse obtenir les privilèges de root (le fichier &amp;lt;code&amp;gt;/usr/bin/xmms&amp;lt;/code&amp;gt; appartenant à root. Un &amp;lt;code&amp;gt;ls -l&amp;lt;/code&amp;gt; sur le fichier donnera ensuite :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;-rw&#039;&#039;&#039;s&#039;&#039;&#039;r-xr--    1 root     root      172812 dec  12 12:12 xmms&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dans ce cas particulier, cela permet à xmms d&#039;obtenir une priorité temps réel qui peut être nécessaire pour un son parfait.&lt;br /&gt;
&lt;br /&gt;
===ACL===&lt;br /&gt;
Les permissions peuvent se montrer limitées et ne permettent pas une gestion fine de certaines situations dans lesquelles un même fichier doit présenter des permissions différentes pour plusieurs utilisateurs. En effet, on ne peut définir normalement qu&#039;un seul propriétaire et un seul groupe, opposés à un unique « tout le monde ».&lt;br /&gt;
&lt;br /&gt;
Les [[ACL]] permettent de dépasser cette limitation en attribuant à un fichier des permissions différentes selon l&#039;utilisateur (rw pour &#039;&#039;utilisateur1&#039;&#039;, rwx pour &#039;&#039;utilisateur2&#039;&#039;, &#039;&#039;r&#039;&#039; pour &#039;&#039;utilisateur3&#039;&#039;, etc.).&lt;br /&gt;
&lt;br /&gt;
Consulter l&#039;article requis pour plus de détails.&lt;br /&gt;
&lt;br /&gt;
===Attributs étendus===&lt;br /&gt;
Les [[fstab|systèmes de fichiers]] &#039;&#039;ext2&#039;&#039; et &#039;&#039;ext3&#039;&#039; permettent l&#039;ajout d&#039;[[attributs étendus]] s&#039;apparentant aux permissions.&lt;br /&gt;
&lt;br /&gt;
Consulter l&#039;article requis pour plus de détails.&lt;br /&gt;
&lt;br /&gt;
= Copyright =&lt;br /&gt;
Copyright &amp;amp;copy; 10/01/2000, Jean-Christophe Cardot&lt;br /&gt;
{{CC-BY-NC-SA}}&lt;/div&gt;</summary>
		<author><name>Vincent Ramos</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Aide:Aide&amp;diff=10080</id>
		<title>Aide:Aide</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Aide:Aide&amp;diff=10080"/>
		<updated>2005-10-26T23:24:40Z</updated>

		<summary type="html">&lt;p&gt;Vincent Ramos : /* Aide à propos du wiki */ retouches&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Aide à propos de Linux et des logiciels libres =&lt;br /&gt;
* Vous voulez [[Intro-index|découvrir Linux et/ou les logiciels libre]].&lt;br /&gt;
* Vous êtes débutants et un peu perdu, vous ne savez pas comment vous y retrouver. Consultez [[Intro-aide|cette introduction]].&lt;br /&gt;
* Vous avez une question précise à poser. Utilisez les [http://lea-linux.org/pho/ forums de Léa]. Ils sont là pour cela. Attention à bien poster votre question sur le bon forum.&lt;br /&gt;
= Aide à propos du [[wiki]] =&lt;br /&gt;
* [http://meta.wikimedia.org/wiki/Aide:Édition Comment éditer une page dans médiawiki]&lt;br /&gt;
* Comment mettre en forme de telle ou telle façon ? Consulter la documentation sur la [http://meta.wikimedia.org/wiki/Aide:Syntaxe_wiki syntaxe wiki] et les [[Aide:Comment_éditer_une_page|spécificités du logiciel Mediawiki installé sur Léa]]&lt;/div&gt;</summary>
		<author><name>Vincent Ramos</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Lea_Linux:C%27est_quoi_un_wiki_%3F&amp;diff=10079</id>
		<title>Lea Linux:C&#039;est quoi un wiki ?</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Lea_Linux:C%27est_quoi_un_wiki_%3F&amp;diff=10079"/>
		<updated>2005-10-26T23:24:03Z</updated>

		<summary type="html">&lt;p&gt;Vincent Ramos : /* Et Léa dans tout cela ? */ typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Étymologie =&lt;br /&gt;
Le nom &#039;&#039;wiki&#039;&#039; vient du terme hawaiien &#039;&#039;wiki wiki&#039;&#039;, qui signifie « rapide » ou « informel ».&lt;br /&gt;
&lt;br /&gt;
= Sens informatique =&lt;br /&gt;
Un wiki est un site collaboratif facilement modifiable par tout le monde : n&#039;importe qui peut y ajouter un document, un paragraphe ou modifier le contenu d&#039;une page. Consulter &#039;&#039;[http://meta.wikimedia.org/wiki/Aide:Édition Comment éditer une page dans médiawiki]&#039;&#039; et &#039;&#039;[http://meta.wikimedia.org/wiki/Aide:Syntaxe_wiki Syntaxe wiki]&#039;&#039; pour plus de détails.&lt;br /&gt;
&lt;br /&gt;
Léa restreint quelque peu cette définition en établissant un système de modération a priori.&lt;br /&gt;
&lt;br /&gt;
= Et ça marche ? =&lt;br /&gt;
Il faut croire, vu le succès par exemple de [http://fr.wikipedia.org Wikipédia] mais aussi de plusieurs sites de documentation (la documentation de Gentoo est par exemple écrite sur un wiki). &lt;br /&gt;
&lt;br /&gt;
= Et c&#039;est pas un peu la chienlit ? =&lt;br /&gt;
La qualité d&#039;un wiki est directement liée à la quantité de relecteurs rapportée au nombre d&#039;éditeurs. Si beaucoup de monde édite n&#039;importe comment mais que personne ne relit ce qui est publié, ça ne fonctionne pas. Un site comme Wikipédia, qui a beaucoup de relecteurs, fonctionne assez bien : les acte de vandalisme y sont le plus souvent repérés rapidement et éliminés. Des participants auxquels la communauté des participants réguliers accorde son crédit, sont même dotés d&#039;outils leur permettant de corriger rapidement les bévues.&lt;br /&gt;
&lt;br /&gt;
= Et Léa dans tout cela ? =&lt;br /&gt;
Sur Léa, nous ne sommes pas encore capable d&#039;assurer un tel niveau de relecture. Nous avons donc décidé, pour ne trop prendre le risque de voir se produire n&#039;importe quoi, de modérer notre wiki. Les puristes de Wikipédia diront que Léa n&#039;est donc pas un wiki&amp;lt;!-- Noter qu&#039;on peut être puriste de Wikipédia sans pour autant accepter tous les aspects d&#039;un wiki, soit dit en passant. V. Ramos  --&amp;gt; : ils n&#039;auront pas totalement tort. Néanmoins, il restera facile d&#039;éditer un article, d&#039;en ajouter un... Seulement, pour s&#039;afficher correctement, les modifications devront être validées, et les nouvelles pages acceptées par les modérateurs de Léa.&lt;br /&gt;
&lt;br /&gt;
=Quelles sont les autres différences entre Léa et un wiki « classique » ?=&lt;br /&gt;
Cette question trouve sa réponse dans l&#039;article &#039;&#039;[[Aide:Comment_éditer_une_page|Spécificités du médiawiki installé sur Léa]]&#039;&#039;.&lt;/div&gt;</summary>
		<author><name>Vincent Ramos</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Lea_Linux:C%27est_quoi_un_wiki_%3F&amp;diff=10078</id>
		<title>Lea Linux:C&#039;est quoi un wiki ?</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Lea_Linux:C%27est_quoi_un_wiki_%3F&amp;diff=10078"/>
		<updated>2005-10-26T23:23:38Z</updated>

		<summary type="html">&lt;p&gt;Vincent Ramos : Ajout de liens vers de l&amp;#039;aide (il faut établir le plus de ponts possibles)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Étymologie =&lt;br /&gt;
Le nom &#039;&#039;wiki&#039;&#039; vient du terme hawaiien &#039;&#039;wiki wiki&#039;&#039;, qui signifie « rapide » ou « informel ».&lt;br /&gt;
&lt;br /&gt;
= Sens informatique =&lt;br /&gt;
Un wiki est un site collaboratif facilement modifiable par tout le monde : n&#039;importe qui peut y ajouter un document, un paragraphe ou modifier le contenu d&#039;une page. Consulter &#039;&#039;[http://meta.wikimedia.org/wiki/Aide:Édition Comment éditer une page dans médiawiki]&#039;&#039; et &#039;&#039;[http://meta.wikimedia.org/wiki/Aide:Syntaxe_wiki Syntaxe wiki]&#039;&#039; pour plus de détails.&lt;br /&gt;
&lt;br /&gt;
Léa restreint quelque peu cette définition en établissant un système de modération a priori.&lt;br /&gt;
&lt;br /&gt;
= Et ça marche ? =&lt;br /&gt;
Il faut croire, vu le succès par exemple de [http://fr.wikipedia.org Wikipédia] mais aussi de plusieurs sites de documentation (la documentation de Gentoo est par exemple écrite sur un wiki). &lt;br /&gt;
&lt;br /&gt;
= Et c&#039;est pas un peu la chienlit ? =&lt;br /&gt;
La qualité d&#039;un wiki est directement liée à la quantité de relecteurs rapportée au nombre d&#039;éditeurs. Si beaucoup de monde édite n&#039;importe comment mais que personne ne relit ce qui est publié, ça ne fonctionne pas. Un site comme Wikipédia, qui a beaucoup de relecteurs, fonctionne assez bien : les acte de vandalisme y sont le plus souvent repérés rapidement et éliminés. Des participants auxquels la communauté des participants réguliers accorde son crédit, sont même dotés d&#039;outils leur permettant de corriger rapidement les bévues.&lt;br /&gt;
&lt;br /&gt;
= Et Léa dans tout cela ? =&lt;br /&gt;
Sur Léa, nous ne sommes pas encore capable d&#039;assurer un tel niveau de relecture. Nous avons donc décidé, pour ne trop prendre le risque de voir se produire n&#039;importe quoi, de modérer notre wiki. Les puristes de Wikipédia diront que Léa n&#039;est donc pas un wiki(&amp;lt;!-- Noter qu&#039;on peut être puriste de Wikipédia sans pour autant accepter tous les aspects d&#039;un wiki, soit dit en passant. V. Ramos  --&amp;gt;) : ils n&#039;auront pas totalement tort. Néanmoins, il restera facile d&#039;éditer un article, d&#039;en ajouter un... Seulement, pour s&#039;afficher correctement, les modifications devront être validées, et les nouvelles pages acceptées par les modérateurs de Léa.&lt;br /&gt;
&lt;br /&gt;
=Quelles sont les autres différences entre Léa et un wiki « classique » ?=&lt;br /&gt;
Cette question trouve sa réponse dans l&#039;article &#039;&#039;[[Aide:Comment_éditer_une_page|Spécificités du médiawiki installé sur Léa]]&#039;&#039;.&lt;/div&gt;</summary>
		<author><name>Vincent Ramos</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Aide:Aide&amp;diff=10077</id>
		<title>Aide:Aide</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Aide:Aide&amp;diff=10077"/>
		<updated>2005-10-26T23:20:59Z</updated>

		<summary type="html">&lt;p&gt;Vincent Ramos : /* Aide à propos du wiki */ lien&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Aide à propos de Linux et des logiciels libres =&lt;br /&gt;
* Vous voulez [[Intro-index|découvrir Linux et/ou les logiciels libre]].&lt;br /&gt;
* Vous êtes débutants et un peu perdu, vous ne savez pas comment vous y retrouver. Consultez [[Intro-aide|cette introduction]].&lt;br /&gt;
* Vous avez une question précise à poser. Utilisez les [http://lea-linux.org/pho/ forums de Léa]. Ils sont là pour cela. Attention à bien poster votre question sur le bon forum.&lt;br /&gt;
= Aide à propos du [[wiki]] =&lt;br /&gt;
* [http://meta.wikimedia.org/wiki/Aide:Édition Comment éditer une page dans médiawiki]&lt;br /&gt;
* Comment mettre en forme de telle ou telle façon ? Consulter la documentation la [http://meta.wikimedia.org/wiki/Aide:Syntaxe_wiki syntaxe WIKI] et les [[Aide:Comment_éditer_une_page|spécificités du médiawiki installé sur Léa]]&lt;/div&gt;</summary>
		<author><name>Vincent Ramos</name></author>
	</entry>
</feed>