Man page - inode(7)

Packages contains this manual

Available languages:

en fr pl ru

Manual

inode

NOM
DESCRIPTION
Type et mode de fichier
STANDARDS
HISTORIQUE
NOTES
VOIR AUSSI
TRADUCTION

NOM

inode – Informations sur les inƓuds de fichier

DESCRIPTION

Chaque fichier possĂšde un inƓud contenant des mĂ©tadonnĂ©es Ă  propos du fichier. Une application peut rĂ©cupĂ©rer ces mĂ©tadonnĂ©es en utilisant stat (2) (ou des appels semblables) qui renvoie une structure stat , ou statx (2) qui renvoie une structure statx .

Voici une liste des informations habituellement trouvĂ©es dans, ou associĂ©es Ă , l’inƓud de fichier avec les noms des champs correspondants de la structure renvoyĂ©e par stat (2) et statx (2) :
PĂ©riphĂ©rique oĂč l’inƓud rĂ©side

stat.st_dev ; statx.stx_dev_minor et statx.stx_dev_major

Chaque inƓud (ainsi que le fichier associĂ©) rĂ©side dans un systĂšme de fichiers qui est hĂ©bergĂ© dans un pĂ©riphĂ©rique. Ce pĂ©riphĂ©rique est identifiĂ© par une combinaison de son ID (identifiant) majeur (qui identifie la classe gĂ©nĂ©rique du pĂ©riphĂ©rique) et un ID mineur (qui identifie une instance particuliĂšre de la classe gĂ©nĂ©rique).

NumĂ©ro d’inƓud

stat.st_ino ; statx.stx_ino

Chaque fichier du systĂšme de fichiers possĂšde un numĂ©ro unique d’inƓud. Les numĂ©ros d’inƓud sont garantis uniques seulement Ă  l’intĂ©rieur du systĂšme de fichiers (c’est-Ă -dire que les mĂȘmes numĂ©ros d’inƓud peuvent ĂȘtre utilisĂ©s dans des systĂšmes de fichiers diffĂ©rents, ce qui est la raison pour laquelle les liens physique ne traversent pas les limites des systĂšmes de fichiers). Ce champ contient le numĂ©ro d’inƓud du fichier.

Mode et type de fichier

stat.st_mode ; statx.stx_mode

Consultez les détails ci-dessous sur le mode et le type de fichier.

Comptage des liens

stat.st_nlink ; statx.stx_nlink

Ce champ contient le nombre de liens physiques du fichier. Des liens supplémentaires vers un fichier existant sont créés en utilisant link (2).

ID utilisateur

stat.st_uid ; statx.stx_uid

Ce champ enregistre les ID utilisateur du propriĂ©taire du fichier. Pour les fichiers nouvellement créés, l’ID utilisateur est l’ID utilisateur effectif du processus crĂ©ateur. L’ID utilisateur d’un fichier peut ĂȘtre modifiĂ© en utilisant chown (2).

ID groupe

stat.st_gid ; statx.stx_gid

L’inƓud enregistre l’ID du propriĂ©taire du groupe du fichier. Pour les fichiers nouvellement créés, l’ID groupe du fichier est soit l’ID groupe du rĂ©pertoire parent ou l’ID groupe effectif du processus crĂ©ateur, selon que le bit set-group-ID est Ă©tabli sur le rĂ©pertoire parent (voir ci-dessous). L’ID groupe peut ĂȘtre modifiĂ© en utilisant chown (2).

PĂ©riphĂ©rique reprĂ©sentĂ© par cet inƓud

stat.st_rdev ; statx.stx_rdev_minor et statx.stx_rdev_major

Si ce fichier (inƓud) reprĂ©sente un pĂ©riphĂ©rique, alors l’inƓud enregistre les ID majeur et mineur de ce pĂ©riphĂ©rique.

Taille de fichier

stat.st_size ; statx.stx_size

Ce champ indique la taille du fichier (s’il s’agit d’un fichier ordinaire ou d’un lien symbolique) en octets. La taille d’un lien symbolique est la longueur du nom de chemin qu’il vise, sans l’octet NULL final.

Taille de bloc préférée pour les E/S

stat.st_blksize ; statx.stx_blksize

Ce champ indique la taille de bloc « préférée » pour des entrées-sorties efficaces de systÚme de fichiers. Des écritures par blocs plus petits peuvent entraßner un cycle lecture/modification/réécriture inefficace.

Nombre de blocs alloués au fichier

stat.st_blocks ; statx.stx_blocks

Ce champ indique le nombre de blocs de 512 octets allouĂ©s au fichier. Cette valeur peut ĂȘtre infĂ©rieure Ă  st_size /512 si le fichier a des trous.

La norme POSIX.1 signale que l’unitĂ© pour un membre st_blocks de la structure stat n’est pas dĂ©finie dans la norme. Dans beaucoup d’implĂ©mentations, c’est 512 octets. Dans quelques systĂšmes, une unitĂ© diffĂ©rente est utilisĂ©e, telle que 1024. De plus, l’unitĂ© peut ĂȘtre diffĂ©rente en fonction des systĂšmes de fichiers.

Horodatage du dernier accĂšs (atime)

stat.st_atime ; statx.stx_atime

C’est l’horodatage du dernier accĂšs au fichier. Il est modifiĂ© par les accĂšs au fichier, par exemple, avec execve (2), mknod (2), pipe (2), utime (2) et read (2) (d’au moins un octet). D’autres interfaces, comme mmap (2), peuvent ou non mettre Ă  jour l’horodatage atime.

Certains systĂšmes de fichiers autorisent le montage de telle maniĂšre que les accĂšs Ă  des fichiers ou des rĂ©pertoires ne modifient pas l’horodatage atime (voir noatime , nodiratime et relatime de mount (8) ainsi que les informations correspondantes dans mount (2)). De plus, l’horodatage atime n’est pas mis Ă  jour si un fichier est ouvert avec l’indicateur O_NOATIME . Consultez open (2).

Horodatage de création (birth) de fichier (btime)

Non renvoyé dans la structure stat ; statx.stx_btime .

C’est l’horodatage de crĂ©ation de fichier. Il est dĂ©fini Ă  la crĂ©ation et n’est plus modifiĂ©.

L’horodatage btime n’était pas prĂ©sent autrefois dans les systĂšmes UNIX et n’est pas actuellement pris en charge dans la plupart des systĂšmes Linux.

Horodatage de la derniĂšre modification (mtime)

stat.st_mtime ; statx.stx_mtime

C’est l’horodatage de la derniĂšre modification de fichier. Il est modifiĂ© par des changements sur le fichier, par exemple, effectuĂ©s par mknod (2), truncate (2), utime (2) et write (2) (d’au moins un octet). D’autre part, l’horodatage mtime d’un rĂ©pertoire est modifiĂ© lors de la crĂ©ation ou la suppression de fichiers en son sein. L’horodatage mtime n’est pas mis Ă  jour lors d’une modification de propriĂ©taire, groupe, mode ou nombre de liens physiques.

Horodatage de la derniĂšre modification d’état (ctime)

stat.st_ctime ; statx.stx_ctime

C’est l’horodatage de la derniĂšre modification d’état. Il est modifiĂ© lors d’une Ă©criture ou d’une modification des informations d’inƓud (c’est-Ă -dire propriĂ©taire, groupe, mode, nombre de liens physiques, etc.).

Les champs d’horodatage indiquent le temps mesurĂ© avec comme point de dĂ©part l’ Époque — 1970-01-01 00:00:00 +0000 UTC (consultez time (7)).

Les horodatages en nanoseconde sont permis sur les systĂšmes de fichiers XFS, JFS, Btrfs et ext4 (depuis Linux 2.6.23). Les horodatages en nanoseconde ne sont pas permis sur les systĂšmes de fichiers ext2, ext3 et Reiserfs. Dans le but de renvoyer des horodatages avec une prĂ©cision d’une nanoseconde, les champs d’horodatage dans les structures stat et statx sont dĂ©finis sous forme de structures qui incluent une composante en nanoseconde. Consultez stat (2) et statx (2) pour davantage d’informations. Sur les systĂšmes de fichiers qui ne permettent pas les rĂ©solutions infĂ©rieures Ă  la seconde, les champs nanoseconde dans les structures stat et statx sont renvoyĂ©s avec comme valeur zĂ©ro.

Type et mode de fichier

Le champ stat.st_mode (pour statx (2), le champ statx.stx_mode ) contient le type et le mode de fichier.

POSIX rattache les bits stat.st_mode correspondant au masque S_IFMT (voir ci-dessous) au type de fichier , les 12 bits correspondant au masque 07777 aux bits de mode de fichier et les 9 bits les moins significatifs (0777) aux bits de permission de fichier .

Les valeurs de masque suivantes sont définies pour le type de fichier :

Image grohtml-3849874-1.png

Ainsi, pour tester (par exemple) un fichier normal, il est possible d’écrire :

stat(pathname, &sb);
if ((sb.st_mode & S_IFMT) == S_IFREG) {
/* Traiter les fichiers normaux */
}

Puisque les tests de la forme prĂ©cĂ©dente sont usuels, des macros supplĂ©mentaires sont dĂ©finies par POSIX pour permettre d’écrire le test de type de fichier dans st_mode de façon plus concise :

S_ISREG (m)

est-ce un fichier ordinaire ?

S_ISDIR (m)

un répertoire ?

S_ISCHR (m)

un périphérique caractÚre ?

S_ISBLK (m)

un périphérique bloc ?

S_ISFIFO (m)

un FIFO (tube nommé) ?

S_ISLNK (m)

un lien symbolique ? (Pas dans POSIX.1-1996).

S_ISSOCK (m)

un socket ? (Pas dans POSIX.1-1996).

Le morceau de code prĂ©cĂ©dent pourrait donc ĂȘtre réécrit comme ceci :

stat(pathname, &sb);
if (S_ISREG(sb.st_mode)) {
/* Traiter les fichiers normaux */
}

Les définitions de la plupart des macros de test de type de fichier précédentes sont fournies si une des macros de test de fonctionnalité suivantes est définie : _BSD_SOURCE (dans glibc 2.19 et versions précédentes), _SVID_SOURCE (dans glibc 2.19 et versions précédentes) ou _DEFAULT_SOURCE (dans glibc 2.20 et versions suivantes). De plus les définitions de toutes les macros précédentes à part S_IFSOCK et S_ISSOCK () sont fournies si _XOPEN_SOURCE est définie.

La dĂ©finition de S_IFSOCK peut aussi ĂȘtre exposĂ©e soit en dĂ©finissant _XOPEN_SOURCE avec une valeur de 500 ou plus, soit (depuis glibc 2.24) en dĂ©finissant _XOPEN_SOURCE et _XOPEN_SOURCE_EXTENDED .

La définition de S_ISSOCK () est exposée si une des macros de test de fonctionnalité suivantes est définie : _BSD_SOURCE (dans glibc 2.19 et versions précédentes), _DEFAULT_SOURCE (dans glibc 2.20 et versions suivantes), _XOPEN_SOURCE avec une valeur de 500 ou plus, _POSIX_C_SOURCE avec une valeur de 200112L ou plus, ou (depuis glibc 2.24) en définissant _XOPEN_SOURCE et _XOPEN_SOURCE_EXTENDED .

Les valeurs de masque suivantes sont définies pour le composant de mode de fichier du champ st_mode :

Image grohtml-3849874-2.png

Le bit set-group-ID ( S_ISGID ) a plusieurs utilisations particuliĂšres. Pour un rĂ©pertoire, il indique que la sĂ©mantique BSD doit ĂȘtre appliquĂ©e en son sein, c’est-Ă -dire que les fichiers qui y sont créés hĂ©ritent leur ID groupe du rĂ©pertoire et non pas de l’ID groupe effectif du processus crĂ©ateur, et les sous-rĂ©pertoires auront automatiquement le bit S_ISGID actif. Pour les fichiers exĂ©cutables, le bit set-group-ID fait que l’ID groupe effectif d’un processus qui exĂ©cute le fichier change comme dĂ©crit dans execve (2). Pour un fichier qui n’a pas d’autorisation d’exĂ©cution pour le groupe ( S_IXGRP non actif), ce bit indique qu’un verrouillage strict est en vigueur sur ce fichier.

Le bit « sticky » ( S_ISVTX ) sur un rĂ©pertoire indique que les fichiers qui s’y trouvent ne peuvent ĂȘtre renommĂ©s ou effacĂ©s que par leur propriĂ©taire, par le propriĂ©taire du rĂ©pertoire ou par un processus privilĂ©giĂ©.

STANDARDS

POSIX.1-2008.

HISTORIQUE

POSIX.1-2001.

POSIX.1-1990 ne dĂ©crivait pas les constantes S_IFMT , S_IFSOCK , S_IFLNK , S_IFREG , S_IFBLK , S_IFDIR , S_IFCHR , S_IFIFO , S_ISVTX , mais rĂ©clame d’utiliser les macros S_ISDIR (), etc.

Les macros S_ISLNK () et S_ISSOCK () ne sont pas présentes dans POSIX.1-1996 ; la premiÚre vient de SVID 4, la seconde de SUSv2.

UNIX V7 (et les systĂšmes suivants) propose S_IREAD , S_IWRITE , et S_IEXEC , lĂ  oĂč POSIX prĂ©fĂšre leurs synonymes S_IRUSR , S_IWUSR et S_IXUSR .

NOTES

Pour les pseudo-fichiers autogĂ©nĂ©rĂ©s par le noyau, la taille de fichier ( stat.st_size , statx.stx_size ) renvoyĂ©e par le noyau n’est pas prĂ©cise. Par exemple, une valeur de zĂ©ro est renvoyĂ©e pour de nombreux fichiers du rĂ©pertoire /proc , tandis que divers fichiers dans /sys renvoient une taille de 4096 octets, mĂȘme si le contenu du fichier est plus petit. Pour de tels fichiers, une lecture d’autant d’octets que possible devrait ĂȘtre tentĂ©e (et ajouter « \0 » au tampon renvoyĂ© s’il est interprĂ©tĂ© comme une chaĂźne).

VOIR AUSSI

stat (1), stat (2), statx (2), symlink (7)

TRADUCTION

La traduction française de cette page de manuel a été créée par Christophe Blaess <https://www.blaess.fr/christophe/>, Stéphan Rafin <stephan.rafin@laposte.net>, Thierry Vignaud <tvignaud@mandriva.com>, François Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard <fevrier@tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>, Thomas Huriaux <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis Barbier <barbier@debian.org>, David Prévot <david@tilapin.org> et Jean-Paul Guillonneau <guillonneau.jeanpaul@free.fr>

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 à debian-l10n-french@lists.debian.org .