inode(7) Miscellaneous Information Manual inode(7)
NOM
inode - Informations sur les inoeuds de fichier
DESCRIPTION
Chaque fichier possede un inoeud contenant des metadonnees a propos du
fichier. Une application peut recuperer ces metadonnees 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 trouvees dans, ou
associees a, l'inoeud de fichier avec les noms des champs
correspondants de la structure renvoyee par stat(2) et statx(2) :
Peripherique ou l'inoeud reside
stat.st_dev ; statx.stx_dev_minor et statx.stx_dev_major
Chaque inoeud (ainsi que le fichier associe) reside dans un
systeme de fichiers qui est heberge dans un peripherique. Ce
peripherique est identifie par une combinaison de son ID
(identifiant) majeur (qui identifie la classe generique du
peripherique) et un ID mineur (qui identifie une instance
particuliere de la classe generique).
Numero d'inoeud
stat.st_ino ; statx.stx_ino
Chaque fichier du systeme de fichiers possede un numero unique
d'inoeud. Les numeros d'inoeud sont garantis uniques seulement a
l'interieur du systeme de fichiers (c'est-a-dire que les memes
numeros d'inoeud peuvent etre utilises dans des systemes de
fichiers differents, ce qui est la raison pour laquelle les
liens physique ne traversent pas les limites des systemes de
fichiers). Ce champ contient le numero d'inoeud du fichier.
Mode et type de fichier
stat.st_mode ; statx.stx_mode
Consultez les details 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 supplementaires vers un fichier existant sont crees en
utilisant link(2).
ID utilisateur
stat.st_uid ; statx.stx_uid
Ce champ enregistre les ID utilisateur du proprietaire du
fichier. Pour les fichiers nouvellement crees, l'ID utilisateur
est l'ID utilisateur effectif du processus createur. L'ID
utilisateur d'un fichier peut etre modifie en utilisant
chown(2).
ID groupe
stat.st_gid ; statx.stx_gid
L'inoeud enregistre l'ID du proprietaire du groupe du fichier.
Pour les fichiers nouvellement crees, l'ID groupe du fichier est
soit l'ID groupe du repertoire parent ou l'ID groupe effectif du
processus createur, selon que le bit set-group-ID est etabli sur
le repertoire parent (voir ci-dessous). L'ID groupe peut etre
modifie en utilisant chown(2).
Peripherique represente par cet inoeud
stat.st_rdev ; statx.stx_rdev_minor et statx.stx_rdev_major
Si ce fichier (inoeud) represente un peripherique, alors
l'inoeud enregistre les ID majeur et mineur de ce peripherique.
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 preferee pour les E/S
stat.st_blksize ; statx.stx_blksize
Ce champ indique la taille de bloc << preferee >> pour des
entrees-sorties efficaces de systeme de fichiers. Des ecritures
par blocs plus petits peuvent entrainer un cycle
lecture/modification/reecriture inefficace.
Nombre de blocs alloues au fichier
stat.st_blocks ; statx.stx_blocks
Ce champ indique le nombre de blocs de 512 octets alloues au
fichier. Cette valeur peut etre inferieure a st_size/512 si le
fichier a des trous.
La norme POSIX.1 signale que l'unite pour un membre st_blocks de
la structure stat n'est pas definie dans la norme. Dans beaucoup
d'implementations, c'est 512 octets. Dans quelques systemes, une
unite differente est utilisee, telle que 1024. De plus, l'unite
peut etre differente en fonction des systemes de fichiers.
Horodatage du dernier acces (atime)
stat.st_atime ; statx.stx_atime
C'est l'horodatage du dernier acces au fichier. Il est modifie
par les acces 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 a jour
l'horodatage atime.
Certains systemes de fichiers autorisent le montage de telle
maniere que les acces a des fichiers ou des repertoires 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 a jour
si un fichier est ouvert avec l'indicateur O_NOATIME. Consultez
open(2).
Horodatage de creation (birth) de fichier (btime)
Non renvoye dans la structure stat ; statx.stx_btime.
C'est l'horodatage de creation de fichier. Il est defini a la
creation et n'est plus modifie.
L'horodatage btime n'etait pas present autrefois dans les
systemes UNIX et n'est pas actuellement pris en charge dans la
plupart des systemes Linux.
Horodatage de la derniere modification (mtime)
stat.st_mtime ; statx.stx_mtime
C'est l'horodatage de la derniere modification de fichier. Il
est modifie par des changements sur le fichier, par exemple,
effectues par mknod(2), truncate(2), utime(2) et write(2) (d'au
moins un octet). D'autre part, l'horodatage mtime d'un
repertoire est modifie lors de la creation ou la suppression de
fichiers en son sein. L'horodatage mtime n'est pas mis a jour
lors d'une modification de proprietaire, groupe, mode ou nombre
de liens physiques.
Horodatage de la derniere modification d'etat (ctime)
stat.st_ctime ; statx.stx_ctime
C'est l'horodatage de la derniere modification d'etat. Il est
modifie lors d'une ecriture ou d'une modification des
informations d'inoeud (c'est-a-dire proprietaire, groupe, mode,
nombre de liens physiques, etc.).
Les champs d'horodatage indiquent le temps mesure avec comme point de
depart l'Epoque -- 1970-01-01 00:00:00 +0000 UTC (consultez time(7)).
Les horodatages en nanoseconde sont permis sur les systemes de fichiers
XFS, JFS, Btrfs et ext4 (depuis Linux 2.6.23). Les horodatages en
nanoseconde ne sont pas permis sur les systemes de fichiers ext2, ext3
et Reiserfs. Dans le but de renvoyer des horodatages avec une precision
d'une nanoseconde, les champs d'horodatage dans les structures stat et
statx sont definis sous forme de structures qui incluent une composante
en nanoseconde. Consultez stat(2) et statx(2) pour davantage
d'informations. Sur les systemes de fichiers qui ne permettent pas les
resolutions inferieures a la seconde, les champs nanoseconde dans les
structures stat et statx sont renvoyes avec comme valeur zero.
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 definies pour le type de fichier :
S_IFMT 0170000 masque de bits pour le champ de bits de type de fichier
S_IFSOCK 0140000 socket
S_IFLNK 0120000 lien symbolique
S_IFREG 0100000 fichier normal
S_IFBLK 0060000 peripherique bloc
S_IFDIR 0040000 repertoire
S_IFCHR 0020000 peripherique caractere
S_IFIFO 0010000 FIFO
Ainsi, pour tester (par exemple) un fichier normal, il est possible
d'ecrire :
stat(pathname, &sb);
if ((sb.st_mode & S_IFMT) == S_IFREG) {
/* Traiter les fichiers normaux */
}
Puisque les tests de la forme precedente sont usuels, des macros
supplementaires sont definies par POSIX pour permettre d'ecrire le test
de type de fichier dans st_mode de facon plus concise :
S_ISREG(m) est-ce un fichier ordinaire ?
S_ISDIR(m) un repertoire ?
S_ISCHR(m) un peripherique caractere ?
S_ISBLK(m) un peripherique bloc ?
S_ISFIFO(m) un FIFO (tube nomme) ?
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 precedent pourrait donc etre reecrit comme ceci :
stat(pathname, &sb);
if (S_ISREG(sb.st_mode)) {
/* Traiter les fichiers normaux */
}
Les definitions de la plupart des macros de test de type de fichier
precedentes sont fournies si une des macros de test de fonctionnalite
suivantes est definie : _BSD_SOURCE (dans glibc 2.19 et versions
precedentes), _SVID_SOURCE (dans glibc 2.19 et versions precedentes) ou
_DEFAULT_SOURCE (dans glibc 2.20 et versions suivantes). De plus les
definitions de toutes les macros precedentes a part S_IFSOCK et
S_ISSOCK() sont fournies si _XOPEN_SOURCE est definie.
La definition de S_IFSOCK peut aussi etre exposee soit en definissant
_XOPEN_SOURCE avec une valeur de 500 ou plus, soit (depuis glibc 2.24)
en definissant _XOPEN_SOURCE et _XOPEN_SOURCE_EXTENDED.
La definition de S_ISSOCK() est exposee si une des macros de test de
fonctionnalite suivantes est definie : _BSD_SOURCE (dans glibc 2.19 et
versions precedentes), _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 definissant _XOPEN_SOURCE et _XOPEN_SOURCE_EXTENDED.
Les valeurs de masque suivantes sont definies pour le composant de mode
de fichier du champ st_mode :
S_ISUID 04000 bit set-user-ID (voir execve(2))
S_ISGID 02000 bit set-group-ID (voir ci-dessous)
S_ISVTX 01000 sticky bit (voir ci-dessous)
S_IRWXU 00700 droits de lecture, ecriture et execution pour
le proprietaire
S_IRUSR 00400 droit de lecture pour le proprietaire
S_IWUSR 00200 droit d'ecriture pour le proprietaire
S_IXUSR 00100 droit d'execution pour le proprietaire
S_IRWXG 00070 droits de lecture, ecriture et execution pour
le groupe
S_IRGRP 00040 droit de lecture pour le groupe
S_IWGRP 00020 droit d'ecriture pour le groupe
S_IXGRP 00010 droit d'execution pour le groupe
S_IRWXO 00007 droits de lecture, ecriture et execution pour
les autres (pas dans le groupe)
S_IROTH 00004 droit de lecture pour les autres
S_IWOTH 00002 droit d'ecriture pour les autres
S_IXOTH 00001 droit d'execution pour les autres
Le bit set-group-ID (S_ISGID) a plusieurs utilisations particulieres.
Pour un repertoire, il indique que la semantique BSD doit etre
appliquee en son sein, c'est-a-dire que les fichiers qui y sont crees
heritent leur ID groupe du repertoire et non pas de l'ID groupe
effectif du processus createur, et les sous-repertoires auront
automatiquement le bit S_ISGID actif. Pour les fichiers executables, le
bit set-group-ID fait que l'ID groupe effectif d'un processus qui
execute le fichier change comme decrit dans execve(2). Pour un fichier
qui n'a pas d'autorisation d'execution 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 repertoire indique que les
fichiers qui s'y trouvent ne peuvent etre renommes ou effaces que par
leur proprietaire, par le proprietaire du repertoire ou par un
processus privilegie.
STANDARDS
POSIX.1-2008.
HISTORIQUE
POSIX.1-2001.
POSIX.1-1990 ne decrivait pas les constantes S_IFMT, S_IFSOCK, S_IFLNK,
S_IFREG, S_IFBLK, S_IFDIR, S_IFCHR, S_IFIFO, S_ISVTX, mais reclame
d'utiliser les macros S_ISDIR(), etc.
Les macros S_ISLNK() et S_ISSOCK() ne sont pas presentes dans
POSIX.1-1996 ; la premiere vient de SVID 4, la seconde de SUSv2.
UNIX V7 (et les systemes suivants) propose S_IREAD, S_IWRITE,
etS_IEXEC, la ou POSIX prefere leurs synonymes S_IRUSR, S_IWUSR et
S_IXUSR.
NOTES
Pour les pseudo-fichiers autogeneres par le noyau, la taille de fichier
(stat.st_size, statx.stx_size) renvoyee par le noyau n'est pas precise.
Par exemple, une valeur de zero est renvoyee pour de nombreux fichiers
du repertoire /proc, tandis que divers fichiers dans /sys renvoient une
taille de 4096 octets, meme si le contenu du fichier est plus petit.
Pour de tels fichiers, une lecture d'autant d'octets que possible
devrait etre tentee (et ajouter << \0 >> au tampon renvoye s'il est
interprete comme une chaine).
VOIR AUSSI
stat(1), stat(2), statx(2), symlink(7)
TRADUCTION
La traduction francaise de cette page de manuel a ete creee par
Christophe Blaess , Stephan Rafin
, Thierry Vignaud ,
Francois Micaux, Alain Portal , Jean-Philippe
Guerard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas
Huriaux , Nicolas Francois
, Florentin Duneau
, Simon Paillard , Denis Barbier , David Prevot
et Jean-Paul Guillonneau
Cette traduction est une documentation libre ; veuillez vous reporter a
la GNU General Public License version 3
concernant les conditions
de copie et de distribution. Il n'y a aucune RESPONSABILITE LEGALE.
Si vous decouvrez un bogue dans la traduction de cette page de manuel,
veuillez envoyer un message a .
Pages du manuel de Linux 6.06 31 octobre 2023 inode(7)