xattr - Attributs étendus
Les attributs étendus sont des paires nom:valeur associées de
façon permanente à des fichiers ou des répertoires, de
manière similaire aux chaînes d’environnement
associées à un processus. Un attribut peut être
défini ou non. S’il l’est, sa valeur peut être
absente ou non.
Extended attributes are extensions to the normal attributes which are associated
with all inodes in the system (i.e., the
stat(2) data). They are often
used to provide additional functionality to a filesystem—for example,
additional security features such as Access Control Lists (ACLs) may be
implemented using extended attributes.
Les utilisateurs ayant le droit de recherche pour un fichier ou un
répertoire peuvent utiliser
listxattr(2) pour
récupérer une liste des noms des attributs définis pour
ce fichier ou ce répertoire.
Les attributs étendus sont obtenus sous forme d’objets atomiques.
Leur lecture (
getxattr(2)) récupère en entier la valeur
d’un attribut et la stocke dans un tampon. Leur écriture (
setxattr(2)) remplace toute valeur précédente par sa
nouvelle valeur.
L’espace utilisé pour les attributs étendus peut
être décompté des quotas de disque du propriétaire
du fichier ou du groupe de fichiers.
Les noms d’attribut sont des chaînes terminées par NULL. Le
nom d’attribut est toujours indiqué sous la forme
complète
espace_de_noms.attribut, par exemple,
user.mime_type,
trusted.md5sum,
system.posix_acl_access
ou
security.selinux.
Le mécanisme d’espace de noms est utilisé pour
définir des classes différentes d’attributs
étendus. Ces classes existent pour plusieurs raisons. Par exemple, les
permissions et les capacités nécessaires pour manipuler les
attributs étendus peuvent différer d’un espace de noms
à un autre.
Actuellement les classes d’attributs étendus
security,
system,
trusted et
user sont définies comme
décrites ci-après. De nouvelles classes pourront être
ajoutées dans le futur.
L’espace de noms des attributs de sécurité est
utilisé par les modules de sécurité du noyau, tels que
Security Enhanced Linux et mettent en œuvre des capacités de
fichier (consultez
capabilities(7)). Les permissions de lecture et
écriture des attributs de sécurité dépendent de la
politique mise en œuvre pour chaque attribut de sécurité
par le module de sécurité. Quand aucun module de
sécurité n’est chargé, tous les processus ont
l’accès en lecture des attributs étendus de
sécurité et l’accès en écriture est
limité aux processus qui ont la capacité
CAP_SYS_ADMIN.
Les attributs étendus du système sont utilisés par le noyau
pour stocker des objets du système tels que les ACL (Access Control
List). L’accès en lecture et écriture dépend de la
politique mise en œuvre pour chaque attribut du système
implémenté par les systèmes de fichiers dans le noyau.
Les attributs étendus fiables (trusted) sont visibles et accessibles
uniquement aux processus qui ont la capacité
CAP_SYS_ADMIN. Les
attributs de cette classe sont utilisés pour implémenter des
mécanismes en espace utilisateur (c’est-à-dire en dehors
du noyau) qui conserve l’information dans des attributs étendus
auxquels les processus ordinaires ne devraient pas avoir accès.
Les attributs étendus d’utilisateur peuvent être
assignés à des fichiers et des répertoires pour stocker
des informations arbitraires supplémentaires telles que le type MIME,
le jeu de caractères ou l’encodage du fichier. Les permissions
d’accès pour les attributs d’utilisateur sont
définis par les bits de permissions de fichier : la permission
de lecture est nécessaire pour récupérer la valeur
d’attribut et la permission d’écriture est
nécessaire pour la modifier.
Les bits de permission des fichiers normaux et des répertoires sont
interprétés différemment des bits de permission de
fichiers spéciaux et de liens symboliques. Pour les fichiers normaux et
les répertoires, les bits de permission définissent
l’accès aux contenus de fichier tandis que pour les fichiers
spéciaux ils définissent l’accès au
périphérique décrit par le fichier spécial. Les
permissions de fichier des liens symboliques ne sont pas utilisées dans
les vérifications d’accès. Ces différences
pourraient permettre d’utiliser des ressources de système de
fichiers d’une façon non contrôlable par les quotas de
disque pour le groupe ou pour les fichiers spéciaux ou les
répertoires accessibles à tous.
Pour cette raison, les attributs étendus d’utilisateur sont
autorisés pour les fichiers normaux et les répertoires, et
l’accès aux attributs étendus d’utilisateur est
restreint au propriétaire et aux utilisateurs avec les capacités
appropriées pour les répertoires avec le bit sticky
défini (consultez la page de manuel de
chmod(1) pour une
explication sur le bit sticky).
The kernel and the filesystem may place limits on the maximum number and size of
extended attributes that can be associated with a file. The VFS-imposed limits
on attribute names and values are 255 bytes and 64 kB, respectively.
The list of attribute names that can be returned is also limited to
64 kB (see BUGS in
listxattr(2)).
Certains systèmes de fichiers, tel Reiserfs (et, historiquement, ext2 et
ext3), exigent que le système de fichiers soit monté avec
l’option de montage
user_xattr pour pouvoir utiliser les
attributs étendus d’utilisateur.
Dans les implémentations actuelles de systèmes de fichiers ext2,
ext3 et ext4, le total des octets utilisés par les noms et valeurs de
tous les attributs étendus de fichier doivent loger dans un seul bloc
du système de fichiers (1024, 2048 ou 4096 octets, en fonction
de la taille de bloc spécifiée lors de la création du
système de fichiers).
Dans les implémentations de système de fichiers Btrfs, XFS et
Reiserfs, il n’existe pas dans la pratique de limite sur le nombre
d’attributs étendus associés à un fichier et les
algorithmes utilisés pour stocker les informations d’attributs
étendus sur le disque sont redimensionnables.
Dans les implémentations de système de fichiers JFS, XFS et
Reiserfs, la limite pour les octets utilisés dans une valeur
d’attribut étendu est le plafond imposé par le
système de fichiers virtuel (VFS).
Dans l’implémentation du système de fichiers Btrfs, le
total des octets utilisés pour le nom, la valeur et les octets
d’en-tête de l’implémentation est limité
à la valeur
nodesize du système de fichiers (16 ko
par défaut).
Les attributs étendus ne sont pas mentionnés dans POSIX.1, mais
certains autres systèmes (par exemple, les BSD et Solaris) fournissent
une fonctionnalité semblable.
Puisque les systèmes de fichiers pour lesquels les attributs
étendus sont stockés peuvent être aussi utilisés
sur des architectures avec un ordre pour les octets différents et une
taille de mot de la machine différente, une attention devrait
être portée à stocker les valeurs d’attribut dans
un format indépendant de l’architecture.
Cette page était précédemment appelée
attr(5).
attr(1),
getfattr(1),
setfattr(1),
getxattr(2),
ioctl_iflags(2),
listxattr(2),
removexattr(2),
setxattr(2),
acl(5),
capabilities(7),
selinux(8)
La traduction française de cette page de manuel a été
créée par Christophe Blaess
<
https://www.blaess.fr/christophe/>, Stéphan Rafin
<
[email protected]>, Thierry Vignaud
<
[email protected]>, François Micaux, Alain Portal
<
[email protected]>, Jean-Philippe Guérard
<
[email protected]>, Jean-Luc Coulon (f5ibh)
<
[email protected]>, Julien Cristau
<
[email protected]>, Thomas Huriaux <
[email protected]>,
Nicolas François <
[email protected]>, Florentin
Duneau <
[email protected]>, Simon Paillard
<
[email protected]>, Denis Barbier
<
[email protected]>, David Prévot <
[email protected]> et
Jean-Paul Guillonneau <
[email protected]>
Cette traduction est une documentation libre ; veuillez vous reporter
à la
GNU
General Public License version 3 concernant les conditions de copie
et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.
Si vous découvrez un bogue dans la traduction de cette page de manuel,
veuillez envoyer un message à
[email protected]