Provided by: manpages-fr-dev_4.13-4_all bug

NOM

       fanotify_mark - Ajouter, supprimer ou modifier une marque fanotify sur un objet de système
       de fichiers

SYNOPSIS

       #include <sys/fanotify.h>

       int fanotify_mark(int fanotify_fd, unsigned int flags,
                         uint64_t mask, int dirfd, const char *pathname);

DESCRIPTION

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

       fanotify_mark() ajoute, supprime ou modifie une marque fanotify sur un objet de système de
       fichiers.  L’appelant  doit avoir le droit de lecture sur l’objet de système de fichiers à
       marquer.

       L’argument fanotify_fd est un descripteur de fichier renvoyé par fanotify_init(2).

       flags est un masque de bits  décrivant  la  modification  à  réaliser.  Il  doit  contenir
       exactement une des valeurs suivantes.

       FAN_MARK_ADD
              Les  événements dans mask seront ajoutés au masque de marque (ou au masque ignore).
              mask doit être non vide sinon l’erreur EINVAL surviendra.

       FAN_MARK_REMOVE
              Les événements dans l’argument mask seront supprimés du masque  de  marque  (ou  du
              masque ignore). mask doit être non vide sinon l’erreur EINVAL surviendra.

       FAN_MARK_FLUSH
              Supprimer toutes les marques de systèmes de fichiers, de montages ou de répertoires
              et fichiers du groupe  fanotify.  Si  flags  contient  FAN_MARK_MOUNT,  toutes  les
              marques   de   montage   seront   supprimées   du   groupe.   Si   flags   contient
              FAN_MARK_FILESYSTEM, toutes les marques de systèmes de fichiers  seront  supprimées
              du groupe. Sinon, toutes les marques des répertoires et fichiers seront supprimées.
              Aucun  autre  attribut  et   au   plus   un   des   attributs   FAN_MARK_MOUNT   ou
              FAN_MARK_FILESYSTEM peut être utilisé avec FAN_MARK_FLUSH. mask est ignoré.

       Si  aucune  des valeurs précédentes n’est indiquée, ou si plus d’une est indiquée, l’appel
       échoue avec l'erreur EINVAL.

       De plus, zéro ou plus des valeurs suivantes peuvent être incluses  dans  flags  (avec  une
       opération OU bit à bit).

       FAN_MARK_DONT_FOLLOW
              Si pathname est un lien symbolique, marquer le lien lui-même, plutôt que le fichier
              pointé  (par  défaut,  fanotify_mark()  déréférence  pathname  si  c’est  un   lien
              symbolique).

       FAN_MARK_ONLYDIR
              Si  l’objet  de  système  de  fichiers  à marquer n’est pas un répertoire, l’erreur
              ENOTDIR surviendra.

       FAN_MARK_MOUNT
              Marquer le point de montage indiqué par pathname. Si pathname n’est pas un point de
              montage  lui-même,  le  point  de  montage contenant pathname sera marqué. Tous les
              répertoires, sous-répertoires et fichiers contenus dans le point de montage  seront
              surveillés.  Les  événements  qui  exigent  que  les  systèmes  de  fichiers soient
              identifiés par des identificateurs de fichier,  tels  que  FAN_CREATE,  FAN_ATTRIB,
              FAN_MOVE  et  FAN_DELETE_SELF,  ne  peuvent pas être fournis comme mask quand flags
              contient FAN_MARK_MOUNT. Une telle tentative renverra l'erreur EINVAL.

       FAN_MARK_FILESYSTEM (depuis Linux 4.20)
              Marquer le système de  fichiers  indiqué  par  pathname.  Le  système  de  fichiers
              contenant  pathname  sera marqué. Tous les fichiers et répertoires contenus dans le
              système de fichiers issus de n'importe quel point de montage seront surveillés.

       FAN_MARK_IGNORED_MASK
              Les événements dans mask seront ajoutés ou supprimés du masque ignore.

       FAN_MARK_IGNORED_SURV_MODIFY
              Le masque ignore survivra aux événements de modification. Si cet attribut n’est pas
              défini,  le  masque  ignore  est effacé quand un événement de modification survient
              pour le fichier ou répertoire ignorés.

       mask définit les événements à écouter (ou à ignorer). C’est un masque  de  bits  constitué
       par les valeurs suivantes :

       FAN_ACCESS
              Créer  un  événement  quand un fichier ou un répertoire (mais consultez BOGUES) est
              accédé (en lecture).

       FAN_MODIFY
              Créer un événement quand un fichier est modifié (en écriture).

       FAN_CLOSE_WRITE
              Créer un événement quand un fichier modifiable en écriture est fermé.

       FAN_CLOSE_NOWRITE
              Créer un événement quand soit un fichier, soit un répertoire, en lecture seule, est
              fermé.

       FAN_OPEN
              Créer un événement quand soit un fichier, soit un répertoire est ouvert.

       FAN_OPEN_EXEC (depuis Linux 5.0)
              Créer  un  événement  quand un fichier est ouvert pour être exécuté. Voir les NOTES
              pour plus de détails.

       FAN_ATTRIB (depuis Linux 5.1)
              Créer un événement quand les  métadonnées  d'un  fichier  ou  d'un  répertoire  ont
              changé.  Un  groupe  fanotify  qui  identifie  les  systèmes  de  fichiers  par des
              identificateurs de fichier est nécessaire.

       FAN_CREATE (depuis Linux 5.1)
              Créer un événement quand un fichier ou un répertoire a été créé dans un  répertoire
              parent  marqué.  Un  groupe fanotify qui identifie les systèmes de fichiers par des
              identificateurs de fichier est nécessaire.

       FAN_DELETE (depuis Linux 5.1)
              Créer un événement quand un fichier ou un répertoire a été effacé  d'un  répertoire
              parent  marqué.  Un  groupe fanotify qui identifie les systèmes de fichiers par des
              identificateurs de fichier est nécessaire.

       FAN_DELETE_SELF (depuis Linux 5.1)
              Créer un événement quand un fichier, ou même un répertoire, marqué est  effacé.  Un
              groupe  fanotify  qui identifie les systèmes de fichiers par des identificateurs de
              fichier est nécessaire.

       FAN_MOVED_FROM (depuis Linux 5.1)
              Créer un événement quand un fichier ou  un  répertoire  a  été  déplacé  depuis  un
              répertoire parent marqué. Un groupe fanotify qui identifie les systèmes de fichiers
              par des identificateurs de fichier est nécessaire.

       FAN_MOVED_TO (depuis Linux 5.1)
              Créer un événement quand un fichier ou un répertoire est déplacé vers un répertoire
              parent  marqué.  Un  groupe fanotify qui identifie les systèmes de fichiers par des
              identificateurs de fichier est nécessaire.

       FAN_MOVE_SELF (depuis Linux 5.1)
              Créer un événement quand un fichier, ou même un répertoire, marqué a  été  déplacé.
              Un  groupe  fanotify qui identifie les systèmes de fichiers par des identificateurs
              de fichier est nécessaire.

       FAN_OPEN_PERM
              Créer un événement quand une permission d’ouvrir un fichier ou  un  répertoire  est
              demandée.  Un  descripteur  de  fichier fanotify créé avec FAN_CLASS_PRE_CONTENT ou
              FAN_CLASS_CONTENT est nécessaire.

       FAN_OPEN_EXEC_PERM (depuis Linux 5.0)
              Créer un événement quand une  permission  d’ouvrir  un  fichier  en  exécution  est
              demandée.  Un  descripteur  de  fichier fanotify créé avec FAN_CLASS_PRE_CONTENT ou
              FAN_CLASS_CONTENT est nécessaire. Voir les NOTES pour des détails supplémentaires.

       FAN_ACCESS_PERM
              Créer un événement quand une permission de lire un fichier  ou  un  répertoire  est
              demandée.  Un  descripteur  de  fichier fanotify créé avec FAN_CLASS_PRE_CONTENT ou
              FAN_CLASS_CONTENT est nécessaire.

       FAN_ONDIR
              Créer  des  événements  pour  les  répertoires  — par  exemple  quand   opendir(3),
              readdir(3)  (mais  voir BOGUES) et closedir(3) sont appelés. Sans cet attribut, les
              événements ne sont créés que pour les fichiers. Dans  le  contexte  des  événements
              d’entrée   de   répertoire  tels  que  FAN_CREATE,  FAN_DELETE,  FAN_MOVED_FROM  et
              FAN_MOVED_TO, il est nécessaire d'indiquer le drapeau FAN_ONDIR afin de  créer  des
              événements  quand  des entrées de sous-répertoire sont modifiées (à savoir mkdir(2)
              ou rmdir(2)).

       FAN_EVENT_ON_CHILD
              Des événements pour les enfants  directs  des  répertoires  marqués  seront  créés.
              L’attribut n’a pas d’effet lors du marquage de montages ou de systèmes de fichiers.
              Remarquez qu’aucun événement n’est créé pour les enfants des  sous-répertoires  des
              répertoires  marqués.  De  manière  plus spécifique, les événements de modification
              d’entrée d'un répertoire FAN_CREATE, FAN_DELETE, FAN_MOVED_FROM et FAN_MOVED_TO  ne
              sont  pas  générés  pour  des modifications effectuées dans les sous-répertoires de
              répertoires marqués. Remarquez que les événements FAN_DELETE_SELF et  FAN_MOVE_SELF
              ne  sont  pas  générés pour les enfants de répertoires marqués. Pour surveiller des
              arborescences complètes de répertoires,  le  montage  ou  le  système  de  fichiers
              adéquat doit être marqué.

       Les valeurs composées suivantes sont définies :

       FAN_CLOSE
              Un fichier est fermé (FAN_CLOSE_WRITE|FAN_CLOSE_NOWRITE).

       FAN_MOVE
              Un fichier ou un répertoire a été déplacé (FAN_MOVED_FROM|FAN_MOVED_TO).

       L’objet de système de fichiers à marquer est déterminé par le descripteur de fichier dirfd
       et le chemin indiqué dans pathname :

       –  si pathname est NULL, dirfd définit l’objet de système de fichiers à marquer ;

       –  si pathname est NULL et que dirfd prend la valeur spéciale AT_FDCWD, le  répertoire  de
          travail actuel est à marquer ;

       –  si  pathname  est  absolu, il définit l’objet de système de fichiers à marquer et dirfd
          est ignoré ;

       –  si pathname est relatif et que dirfd n’a pas  la  valeur  AT_FDCWD,  alors  l’objet  de
          système  de  fichiers à marquer est déterminé en interprétant pathname comme relatif au
          répertoire référencé par dirfd ;

       –  si pathname est relatif et que dirfd a la valeur AT_FDCWD, alors l’objet de système  de
          fichiers  à  marquer est déterminé en interprétant pathname comme relatif au répertoire
          de travail actuel.

VALEUR RENVOYÉE

       S'il réussit, fanotify_mark() renvoie 0. En cas d'erreur, il renvoie -1 et  remplit  errno
       avec la valeur d'erreur.

ERREURS

       EBADF  Un descripteur de fichier incorrect a été passé dans fanotify_fd.

       EINVAL Une  valeur  incorrecte a été passée dans flags ou mask, ou fanotify_fd n'était pas
              un descripteur de fichier fanotify.

       EINVAL Le descripteur de fichier fanotify a été ouvert avec FAN_CLASS_NOTIF ou  le  groupe
              fanotify  identifie  des systèmes de fichiers par des identificateurs de fichier et
              le masque contient un attribut pour des événements de permission (FAN_OPEN_PERM  ou
              FAN_ACCESS_PERM).

       ENODEV Le  système  de  fichiers  indiqué  par  pathname  n'est associé à aucun système de
              fichiers prenant en charge  fsid  (comme  tmpfs(5)).  Cette  erreur  ne  peut  être
              renvoyée  qu'avec un groupe fanotify qui identifie les systèmes de fichiers par des
              identificateurs de fichier.

       ENOENT L’objet de système de fichiers indiqué par dirfd et pathname  n’existe  pas.  Cette
              erreur  survient  aussi lors d’une tentative de supprimer une marque d’un objet qui
              n’est pas marqué.

       ENOMEM La mémoire nécessaire n’a pas pu être allouée.

       ENOSPC Le nombre de marques dépasse la limite de 8192  et  l’attribut  FAN_UNLIMITED_MARKS
              n’était  pas  indiqué  quand  le  descripteur  de  fichier fanotify a été créé avec
              fanotify_init(2).

       ENOSYS Ce noyau n’implémente pas fanotify_mark(). L’interface  de  programmation  fanotify
              n'est disponible que si le noyau a été configuré avec CONFIG_FANOTIFY.

       ENOTDIR
              flags   contient   FAN_MARK_ONLYDIR,  et  dirfd  et  pathname  n’indiquent  pas  de
              répertoire.

       EOPNOTSUPP
              L'objet indiqué par pathname est associé à un système de fichiers qui ne  gère  pas
              l'encodage  d’identificateurs  de  fichier.  Cette erreur ne peut être renvoyée que
              lorsqu'un  groupe  fanotify  identifie   les   systèmes   de   fichiers   par   des
              identificateurs de fichier.

       EXDEV  Le  système  de  fichiers  indiqué  par  pathname  se trouve dans un sous-volume de
              système de fichiers (comme btrfs(5)) qui utilise un fsid différent de son superbloc
              racine. Cette erreur ne peut être renvoyée que par un groupe fanotify qui identifie
              les systèmes de fichiers par des identificateurs de fichier.

VERSIONS

       fanotify_mark() a été introduit dans la version 2.6.36 du noyau Linux et  activé  dans  la
       version 2.6.37.

CONFORMITÉ

       Cet appel système est spécifique à Linux.

NOTES

   FAN_OPEN_EXEC et FAN_OPEN_EXEC_PERM
       Quand  on  utilise FAN_OPEN_EXEC ou FAN_OPEN_EXEC_PERM dans le mask, des événements de ces
       types ne seront renvoyés que lorsque l'exécution directe d'un programme se  produit.  Plus
       particulièrement,  cela  signifie  que  les  événements de ces types seront créés pour les
       fichiers ouverts en utilisant execve(2), execveat(2) ou uselib(2). Les événements  de  ces
       types  n'apparaîtront pas quand un interpréteur est passé pour interprétation d'un fichier
       (ou s'il est en cours de lecture).

       De plus, si une marque a aussi été placée sur l'éditeur de liens dynamiques de  Linux,  un
       utilisateur doit s'attendre aussi à recevoir un événement associé quand un objet ELF a été
       ouvert avec succès en utilisant execve(2) ou execveat(2).

       Par exemple, si le binaire ELF suivant devait être appelé et si une marque FAN_OPEN_EXEC a
       été placée sur / :

           $ /bin/echo toto

       Dans  ce  cas,  l'application  à  l'écoute  devrait recevoir des événements FAN_OPEN_EXEC,
       respectivement pour le binaire ELF et pour l'interpréteur :

           /bin/echo
           /lib64/ld-linux-x86-64.so.2

BOGUES

       Les bogues suivants étaient présents dans les noyaux Linux avant la version 3.16 :

       –  Si flags contient FAN_MARK_FLUSH, dirfd  et  pathname  doivent  indiquer  un  objet  de
          système de fichiers valable, même si cet objet n’est pas utilisé.

       –  readdir(2) ne crée pas d’événement FAN_ACCESS ;

       –  si  fanotify_mark() est appelé avec FAN_MARK_FLUSH, les valeurs incorrectes de flags ne
          sont pas vérifiées.

VOIR AUSSI

       fanotify_init(2), fanotify(7)

COLOPHON

       Cette page fait partie de la publication 5.10 du projet man-pages Linux.  Une  description
       du  projet et des instructions pour signaler des anomalies et la dernière version de cette
       page peuvent être trouvées à l'adresse https://www.kernel.org/doc/man-pages/.

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  ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  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 ⟨⟩.