Man page - fanotify_init(2)

Packages contains this manual

Available languages:

en fr ja

Manual

fanotify_init

NOM
BIBLIOTHÈQUE
SYNOPSIS
DESCRIPTION
VALEUR RENVOYÉE
ERREURS
VERSIONS
STANDARDS
HISTORIQUE
BOGUES
VOIR AUSSI
TRADUCTION

NOM

fanotify_init - Créer et initialiser un groupe fanotify

BIBLIOTHÈQUE

BibliothĂšque C standard ( libc , -lc )

SYNOPSIS

#include <fcntl.h> /* Définition des constantes O_* */
#include <sys/fanotify.h>

int fanotify_init(unsigned int flags , unsigned int event_f_flags );

DESCRIPTION

Pour un aperçu de l’interface de programmation fanotify, consultez fanotify (7).

fanotify_init () initialise un nouveau groupe fanotify et renvoie un descripteur de fichier pour la file d’évĂ©nements associĂ©e au groupe.

Le descripteur de fichier est utilisĂ© dans les appels de fanotify_mark (2) pour indiquer les fichiers, les rĂ©pertoires, les points de montage et les systĂšmes de fichiers pour lesquels les Ă©vĂ©nements fanotify seront créés. Ces Ă©vĂ©nements sont reçus en lisant le descripteur de fichier. Certains Ă©vĂ©nements ne sont qu’informatifs, indiquant qu’il y a eu un accĂšs au fichier. D’autres Ă©vĂ©nements peuvent ĂȘtre utilisĂ©s pour dĂ©terminer si une autre application a le droit d’accĂ©der Ă  un fichier ou rĂ©pertoire. Le droit d’accĂ©der aux objets de systĂšme de fichiers est accordĂ© en Ă©crivant dans le descripteur de fichier.

Plusieurs programmes peuvent utiliser l’interface fanotify en mĂȘme temps pour surveiller les mĂȘmes fichiers.

Le nombre de groupes fanotify par utilisateur est limité. Voir fanotify (7) pour des détails sur cette limite.

L’argument flags contient un champ multibit dĂ©finissant la classe de notification de l’application Ă©coutant et d’autres champs monobit indiquant le comportement du descripteur de fichier.

Si plusieurs Ă©coutants d’évĂ©nements de permission existent, la classe de notification est utilisĂ©e pour Ă©tablir l’ordre dans lequel les Ă©coutants reçoivent les Ă©vĂ©nements.

Une seule des classes de notification suivantes peut ĂȘtre indiquĂ©e dans flags .
FAN_CLASS_PRE_CONTENT

Cette valeur permet de recevoir des Ă©vĂ©nements notifiant de l’accĂšs Ă  un fichier et des Ă©vĂ©nements de dĂ©cisions de permission d’accĂšs Ă  un fichier. Elle est conçue pour les Ă©coutants d’évĂ©nement qui doivent accĂ©der aux fichiers avant qu’ils ne contiennent leurs donnĂ©es finales. Cette classe de notification pourrait ĂȘtre utilisĂ©e par exemple par des gestionnaires de stockage hiĂ©rarchisĂ©. L’utilisation de cet attribut exige la capacitĂ© CAP_SYS_ADMIN .

FAN_CLASS_CONTENT

Cette valeur permet de recevoir des Ă©vĂ©nements notifiant l’accĂšs Ă  un fichier et des Ă©vĂ©nements de dĂ©cisions de permission d’accĂšs Ă  un fichier. Elle est conçue pour les Ă©coutants d’évĂ©nement qui doivent accĂ©der aux fichiers quand ils contiennent dĂ©jĂ  leur contenu final. Cette classe de notification pourrait ĂȘtre utilisĂ©e par exemple par des programmes de dĂ©tection de logiciels malveillants. L’utilisation de cet attribut exige la capacitĂ© CAP_SYS_ADMIN .

FAN_CLASS_NOTIF

C’est la valeur par dĂ©faut. Elle n’a pas besoin d’ĂȘtre indiquĂ©e. Cette valeur ne permet de recevoir que des Ă©vĂ©nements notifiant qu’un fichier a Ă©tĂ© accĂ©dĂ©. Les dĂ©cisions de permission avant que le fichier ne soit accĂ©dĂ© ne sont pas possibles.

Les Ă©coutants avec diffĂ©rentes classes de notification recevront les Ă©vĂ©nements dans l’ordre FAN_CLASS_PRE_CONTENT , FAN_CLASS_CONTENT , FAN_CLASS_NOTIF . L’ordre de notification pour les Ă©coutants dans la mĂȘme classe de notification n’est pas dĂ©fini.

Les bits suivants peuvent de plus ĂȘtre dĂ©finis dans flags .
FAN_CLOEXEC

Placer l’attribut « close-on-exec » ( FD_CLOEXEC ) sur le nouveau descripteur de fichier. Consultez la description de l’attribut O_CLOEXEC dans open (2).

FAN_NONBLOCK

Activer l’attribut non bloquant ( O_NONBLOCK ) pour le descripteur de fichier. La lecture du descripteur de fichier ne bloquera pas. À la place, si aucune donnĂ©e n’est disponible, read (2) Ă©chouera avec l’erreur EAGAIN .

FAN_UNLIMITED_QUEUE

Supprimer la limite du nombre d’évĂ©nements pour la file d’évĂ©nements. Voir fanotify (7) pour des dĂ©tails sur cette limite. L’utilisation de cet attribut nĂ©cessite la capacitĂ© CAP_SYS_ADMIN .

FAN_UNLIMITED_MARKS

Supprimer la limite du nombre de marques fanotify par utilisateur. Voir fanotify (7) pour des dĂ©tails sur cette limite. L’utilisation de cet attribut nĂ©cessite la capacitĂ© CAP_SYS_ADMIN .

FAN_REPORT_TID (depuis Linux 4.20)

Signaler l’ID d’un thread (TID) au lieu de l’ID du processus (PID) dans le champ pid de la struct fanotify_event_metadata fournie Ă  read (2) (voir fanotify (7)). L’utilisation de cet attribut exige la capacitĂ© CAP_SYS_ADMIN .

FAN_ENABLE_AUDIT (depuis Linux 4.15)

Activer la gĂ©nĂ©ration d’entrĂ©es de journal d’audit sur des tentatives d’accĂšs effectuĂ©es par des Ă©vĂ©nements de droits. La rĂ©ponse de l’évĂ©nement de droits doit ĂȘtre marquĂ©e par l’attribut FAN_AUDIT pour qu’une entrĂ©e de journal d’audit soit gĂ©nĂ©rĂ©e. L’utilisation de cet attribut exige la capacitĂ© CAP_AUDIT_WRITE .

FAN_REPORT_FID (depuis Linux 5.1)

Cette valeur permet la rĂ©ception d’évĂ©nements qui contiennent des informations complĂ©mentaires sur l’objet du systĂšme de fichiers sous-jacent corrĂ©lĂ© Ă  un Ă©vĂ©nement. Un enregistrement supplĂ©mentaire de type FAN_EVENT_INFO_TYPE_FID enferme les informations sur l’objet et est inclus dans la structure gĂ©nĂ©rique des mĂ©tadonnĂ©es de l’évĂ©nement. Le descripteur de fichier utilisĂ© pour reprĂ©senter l’objet liĂ© Ă  un Ă©vĂ©nement est remplacĂ© par un identificateur de fichier. Il est conçu pour les applications qui trouvent que l’utilisation d’un identificateur de fichier pour identifier un objet convient mieux qu’un descripteur de fichier. De plus, il peut ĂȘtre utilisĂ© par des applications supervisant un rĂ©pertoire ou un systĂšme de fichiers qui s’intĂ©ressent aux modifications d’entrĂ©e de rĂ©pertoire telles que FAN_CREATE , FAN_DELETE , FAN_MOVE et FAN_RENAME , ou Ă  des Ă©vĂ©nements tels que FAN_ATTRIB , FAN_DELETE_SELF et FAN_MOVE_SELF . Tous les Ă©vĂ©nements ci-dessus exigent un groupe fanotify identifiant les objets de systĂšme de fichiers par des identificateurs de fichier. Remarquez que sans l’attribut FAN_REPORT_TARGET_FID , pour les Ă©vĂ©nements de modification d’entrĂ©e de rĂ©pertoire, il existe un enregistrement d’informations qui identifie le rĂ©pertoire modifiĂ© et non l’objet enfant créé/supprimĂ©/dĂ©placĂ©. L’utilisation de FAN_CLASS_CONTENT ou de FAN_CLASS_PRE_CONTENT n’est pas autorisĂ©e avec cet attribut et donnera une erreur EINVAL . Voir fanotify (7) pour des informations supplĂ©mentaires.

FAN_REPORT_DIR_FID (depuis Linux 5.9)

Les Ă©vĂ©nements des groupes fanotify initialisĂ©s avec cet attribut contiendront (voir les exceptions ci-dessous) des informations supplĂ©mentaires sur l’objet d’un rĂ©pertoire corrĂ©lĂ© Ă  un Ă©vĂ©nement. Un enregistrement supplĂ©mentaire de type FAN_EVENT_INFO_TYPE_DFID enferme les informations sur l’objet rĂ©pertoire et est inclus dans la structure gĂ©nĂ©rique des mĂ©tadonnĂ©es de l’évĂ©nement. Pour des Ă©vĂ©nements qui arrivent sur un objet qui n’est pas un rĂ©pertoire, la structure supplĂ©mentaire inclut un identificateur de fichier qui identifie l’objet de systĂšme de fichiers du rĂ©pertoire parent. Remarquez qu’il n’y a pas de garantie que l’objet systĂšme de fichiers du rĂ©pertoire ne se trouve Ă  l’emplacement dĂ©crit par l’information d’identificateur de fichier au moment oĂč l’évĂ©nement est reçu. S’il est associĂ© Ă  l’attribut FAN_REPORT_FID , il se peut que deux enregistrements soient signalĂ©s avec des Ă©vĂšnements qui se produisent sur un objet non rĂ©pertoire, un pour identifier l’objet non rĂ©pertoire lui-mĂȘme, et un pour identifier l’objet rĂ©pertoire parent. Remarquez que dans certains cas, un objet de systĂšme de fichiers n’a pas de parent, par exemple quand un Ă©vĂ©nement se produit sur un fichier non liĂ© mais ouvert. Dans ce cas, avec l’attribut FAN_REPORT_FID l’évĂ©nement sera signalĂ© avec un seul enregistrement pour identifier l’objet non rĂ©pertoire, puisqu’il n’y a pas de rĂ©pertoire associĂ© Ă  l’évĂ©nement. Sans l’attribut FAN_REPORT_FID , aucun Ă©vĂ©nement ne sera signalĂ©. Voir fanotify (7) pour des dĂ©tails supplĂ©mentaires.

FAN_REPORT_NAME (depuis Linux 5.9)

Les Ă©vĂ©nements des groupes fanotify initialisĂ©s avec cet attribut contiendront des informations supplĂ©mentaires sur le nom de l’entrĂ©e de rĂ©pertoire corrĂ©lĂ© Ă  un Ă©vĂ©nement. Cet attribut doit ĂȘtre fourni en association avec l’attribut FAN_REPORT_DIR_FID . Le fait de fournir cette valeur d’attribut sans FAN_REPORT_DIR_FID aboutira Ă  l’erreur EINVAL . Cet attribut peut ĂȘtre combinĂ© Ă  l’attribut FAN_REPORT_FID . Un enregistrement supplĂ©mentaire de type FAN_EVENT_INFO_TYPE_DFID_NAME , qui enferme les informations sur l’entrĂ©e de rĂ©pertoire, est inclus dans la structure gĂ©nĂ©rique des mĂ©tadonnĂ©es de l’évĂ©nement et remplace l’enregistrement des informations supplĂ©mentaires de type FAN_EVENT_INFO_TYPE_DFID . L’enregistrement supplĂ©mentaire inclut un identificateur de fichier qui identifie un objet de systĂšme de fichiers de rĂ©pertoire suivi d’un nom qui identifie une entrĂ©e dans ce rĂ©pertoire. Pour les Ă©vĂ©nements de modification d’entrĂ©e de rĂ©pertoire FAN_CREATE , FAN_DELETE et FAN_MOVE , le nom signalĂ© est celui de l’entrĂ©e de rĂ©pertoire créée/effacĂ©e/dĂ©placĂ©e. L’évĂ©nement FAN_RENAME peut contenir deux enregistrements d’information. L’un, de type FAN_EVENT_INFO_TYPE_OLD_DFID_NAME , identifie l’ancienne entrĂ©e de rĂ©pertoire. L’autre, de type FAN_EVENT_INFO_TYPE_NEW_DFID_NAME , identifie la nouvelle entrĂ©e de rĂ©pertoire. Pour les autres Ă©vĂ©nements qui se produisent sur un objet rĂ©pertoire, l’identificateur rapportĂ© est celui de l’objet rĂ©pertoire lui-mĂȘme et le nom signalĂ© est « . ». Pour les autres Ă©vĂ©nements qui se produisent sur un objet non rĂ©pertoire, l’identificateur de fichier signalĂ© est celui de l’objet rĂ©pertoire parent et le nom signalĂ© est celui de l’entrĂ©e d’un rĂ©pertoire oĂč se situait l’objet au moment de l’évĂ©nement. La raison derriĂšre cette logique est que l’identificateur de fichier du rĂ©pertoire signalĂ© peut ĂȘtre passĂ© Ă  open_by_handle_at (2) pour rĂ©cupĂ©rer un descripteur de fichier de rĂ©pertoire ouvert et que ce descripteur de fichier ainsi que le nom signalĂ© puissent ĂȘtre utilisĂ©s pour appeler fstatat (2). La mĂȘme rĂšgle qui s’applique au type d’enregistrement FAN_EVENT_INFO_TYPE_DFID s’applique aussi au type d’enregistrement FAN_EVENT_INFO_TYPE_DFID_NAME : si un objet non rĂ©pertoire n’a pas de parent, soit l’évĂ©nement ne sera pas signalĂ©, soit il le sera sans les informations d’entrĂ©e de rĂ©pertoire. Remarquez qu’il n’existe pas de garantie que l’objet de systĂšme de fichiers se trouve Ă  l’endroit dĂ©crit par les informations de l’entrĂ©e de rĂ©pertoire au moment oĂč l’évĂ©nement est reçu. Voir fanotify (7) pour des dĂ©tails supplĂ©mentaires.

FAN_REPORT_DFID_NAME

C’est un synonyme de ( FAN_REPORT_DIR_FID | FAN_REPORT_NAME ).

FAN_REPORT_TARGET_FID (depuis Linux 5.17)

Les Ă©vĂ©nements des groupes fanotify initialisĂ©s avec cet attribut contiendront des informations supplĂ©mentaires sur l’enfant corrĂ©lĂ© aux Ă©vĂ©nements de modification d’entrĂ©e de rĂ©pertoire. Cet attribut doit ĂȘtre fourni en association avec les attributs FAN_REPORT_FID , FAN_REPORT_DIR_FID et FAN_REPORT_NAME . Sans cela, l’erreur EINVAL sera renvoyĂ©e. Pour les Ă©vĂ©nements de modification d’entrĂ©e de rĂ©pertoire FAN_CREATE , FAN_DELETE , FAN_MOVE et FAN_RENAME , un enregistrement supplĂ©mentaire de type FAN_EVENT_INFO_TYPE_FID est signalĂ© en plus des enregistrements d’information de type FAN_EVENT_INFO_TYPE_DFID , FAN_EVENT_INFO_TYPE_DFID_NAME , FAN_EVENT_INFO_TYPE_OLD_DFID_NAME et FAN_EVENT_INFO_TYPE_NEW_DFID_NAME . L’enregistrement supplĂ©mentaire comprend un identifiant de fichier qui identifie l’objet enfant de systĂšme de fichier auquel se rapporte l’entrĂ©e de rĂ©pertoire.

FAN_REPORT_DFID_NAME_TARGET

C’est un synonyme de ( FAN_REPORT_DFID_NAME | FAN_REPORT_FID | FAN_REPORT_TARGET_FID ).

FAN_REPORT_PIDFD (depuis Linux 5.15)

Les Ă©vĂ©nements des groupes fanotify initialisĂ©s avec cet attribut contiendront des informations supplĂ©mentaires dans la structure gĂ©nĂ©rique fanotify_event_metadata . Cet enregistrement d’informations sera de type FAN_EVENT_INFO_TYPE_PIDFD et contiendra un pidfd pour le processus responsable de la gĂ©nĂ©ration d’un Ă©vĂ©nement. Un pidfd renvoyĂ© dans cet objet enregistrement n’est pas diffĂ©rent du pidfd renvoyĂ© lors d’un appel pidfd_open (2). Cet enregistrement sert aux applications qui veulent dĂ©terminer de maniĂšre fiable si le processus responsable de la gĂ©nĂ©ration d’un Ă©vĂ©nement a Ă©tĂ© recyclĂ© ou terminĂ©. L’utilisation de l’attribut FAN_REPORT_TID avec FAN_REPORT_PIDFD n’est pas prise en charge actuellement et si on essaie de faire cela, une erreur EINVAL sera renvoyĂ©e. Cette limite est actuellement imposĂ©e par l’API de pidfd car elle ne gĂšre actuellement que la crĂ©ation de pidfds pour des leaders de groupes de threads. La crĂ©ation de pidfds pour autre chose que les leaders de groupes de thread pourra ĂȘtre gĂ©rĂ©e dans l’avenir, annulant cette exception. Pour plus de dĂ©tails sur l’enregistrement d’informations, voir fanotify (7).

L’argument event_f_flags dĂ©finit les attributs d’état de fichier qui seront dĂ©finis sur les descriptions de fichiers ouverts qui sont créées pour les Ă©vĂ©nements fanotify. Pour plus de prĂ©cisions sur ces attributs, consultez la description des valeurs de flags dans open (2). event_f_flags contient un champ multibit pour le mode d’accĂšs. Ce champ peut prendre une des valeurs suivantes :
O_RDONLY

Cette valeur permet l’accùs en lecture seule.

O_WRONLY

Cette valeur permet l’accĂšs en Ă©criture seule.

O_RDWR

Cette valeur permet l’accĂšs en lecture et Ă©criture.

Des bits supplĂ©mentaires peuvent ĂȘtre dĂ©finis dans event_f_flags . Les valeurs les plus utiles sont les suivantes :
O_LARGEFILE

Activer la prise en charge de fichiers dĂ©passant 2 Go. Sans cet attribut, une erreur EOVERFLOW surviendra lors d’une tentative d’ouverture d’un gros fichier surveillĂ© par un groupe fanotify sur un systĂšme 32 bits.

O_CLOEXEC (depuis Linux 3.18)

Activer l’attribut « close-on-exec » pour le descripteur de fichier. Consultez la description de l’attribut O_CLOEXEC dans open (2) pour savoir pourquoi cela peut ĂȘtre utile.

Les valeurs suivantes sont aussi permises : O_APPEND , O_DSYNC , O_NOATIME , O_NONBLOCK et O_SYNC . Indiquer n’importe quel autre attribut dans event_f_flags provoque l’erreur EINVAL (mais consultez BOGUES ).

VALEUR RENVOYÉE

S’il rĂ©ussit, fanotify_init () renvoie un nouveau descripteur de fichier. En cas d’erreur, il renvoie -1 et errno contient le code d’erreur.

ERREURS

EINVAL

Une valeur incorrecte a été passée dans flags ou event_f_flags . FAN_ALL_INIT_FLAGS (obsolÚte depuis Linux 4.20) définit tous les bits permis pour flags .

EMFILE

Le nombre de groupes fanotify pour cet utilisateur dépasse la limite. Voir fanotify (7) pour des détails sur cette limite.

EMFILE

La limite du nombre de descripteurs de fichiers par processus a été atteinte.

ENOMEM

Échec d’allocation mĂ©moire pour le groupe de notification.

ENOSYS

Ce noyau n’implĂ©mente pas fanotify_init (). L’interface de programmation fanotify n’est disponible que si le noyau a Ă©tĂ© configurĂ© avec CONFIG_FANOTIFY .

EPERM

L’opĂ©ration n’est pas permise car l’appelant n’a pas la capacitĂ© requise.

VERSIONS

Avant Linux 5.13, l’appel Ă  fanotify_init () exigeait la capacitĂ© CAP_SYS_ADMIN . Depuis Linux 5.13, les utilisateurs peuvent appeler fanotify_init () sans la capacitĂ© CAP_SYS_ADMIN , pour crĂ©er et initialiser un groupe fanotify avec des fonctionnalitĂ©s limitĂ©es.
Les limites imposĂ©es Ă  l’écoutant d’un Ă©vĂ©nement créé par un
utilisateur

sans la capacité CAP_SYS_ADMIN sont les suivantes :

-

L’utilisateur ne peut pas demander une file d’attente d’évĂ©nements illimitĂ©e en utilisant FAN_UNLIMITED_QUEUE .

-

L’utilisateur ne peut pas demander un nombre illimitĂ© de marques en utilisant FAN_UNLIMITED_MARKS .

-

L’utilisateur ne peut pas demander Ă  utiliser des classes de notification FAN_CLASS_CONTENT ou FAN_CLASS_PRE_CONTENT . Cela signifie que l’utilisateur ne peut pas de demander des Ă©vĂ©nements de droits.

-

L’utilisateur doit crĂ©er un groupe qui identifie l’objet systĂšme de fichiers par des identificateurs de fichier, par exemple en fournissant l’attribut FAN_REPORT_FID .

-

L’utilisateur est limitĂ© aux inƓuds de marques. La possibilitĂ© de marquer un point de montage ou un systĂšme de fichiers Ă  l’aide de fanotify_mark (), Ă  travers l’utilisation de FAN_MARK_MOUNT ou de FAN_MARK_FILESYSTEM , n’est pas autorisĂ©e.

-

L’objet Ă©vĂ©nement de la file d’attente d’évĂ©nements est limitĂ© en termes d’information disponible pour l’utilisateur non privilĂ©giĂ©. Un utilisateur ne recevra pas non plus le pid qui a gĂ©nĂ©rĂ© l’évĂ©nement, sauf si le processus qui Ă©coute a lui-mĂȘme gĂ©nĂ©rĂ© l’évĂ©nement.

STANDARDS

Linux.

HISTORIQUE

Linux 2.6.37.

BOGUES

Le bogue suivant était présent avant Linux 3.18 :

-

O_CLOEXEC est ignorĂ© lorsqu’il est passĂ© dans event_f_flags .

Le bogue suivant était présent avant Linux 3.14 :

-

l’argument event_f_flags n’est pas vĂ©rifiĂ© pour les attributs incorrects. Les attributs qui ne sont conçus que pour une utilisation interne, comme FMODE_EXEC , peuvent ĂȘtre dĂ©finis et seront donc dĂ©finis pour les descripteurs de fichier renvoyĂ©s lors de la lecture depuis le descripteur de fichier fanotify.

VOIR AUSSI

fanotify_mark (2), fanotify (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-Philippe MENGUAL <jpmengual@debian.org>

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 .