fanotify_mark(2) System Calls Manual fanotify_mark(2) NOM fanotify_mark - Ajouter, supprimer ou modifier une marque fanotify sur un objet de systeme de fichiers BIBLIOTHEQUE Bibliotheque C standard (libc, -lc) SYNOPSIS #include int fanotify_mark(int fanotify_fd, unsigned int flags, uint64_t mask, int dirfd, const char *_Nullable path); DESCRIPTION Pour un apercu de l'interface de programmation fanotify, consultez fanotify(7). fanotify_mark() ajoute, supprime ou modifie une marque fanotify sur un objet de systeme de fichiers. L'appelant doit avoir le droit de lecture sur l'objet de systeme de fichiers a marquer. L'argument fanotify_fd est un descripteur de fichier renvoye par fanotify_init(2). flags est un masque de bits decrivant la modification a realiser. Il doit contenir exactement une des valeurs suivantes. FAN_MARK_ADD Les evenements dans mask seront ajoutes au masque de marque (ou au masque ignore). mask doit etre non vide sinon l'erreur EINVAL surviendra. FAN_MARK_REMOVE Les evenements dans l'argument mask seront supprimes du masque de marque (ou du masque ignore). mask doit etre non vide sinon l'erreur EINVAL surviendra. FAN_MARK_FLUSH Remove either all marks for filesystems, all marks for mounts, or all marks for directories and files from the fanotify group. If flags contains FAN_MARK_MOUNT, all marks for mounts are removed from the group. If flags contains FAN_MARK_FILESYSTEM, all marks for filesystems are removed from the group. Otherwise, all marks for directories and files are removed. No flag other than, and at most one of, the flags FAN_MARK_MNTNS, FAN_MARK_MOUNT, or FAN_MARK_FILESYSTEM can be used in conjunction with FAN_MARK_FLUSH. mask is ignored. Si aucune des valeurs precedentes n'est indiquee, ou si plus d'une est indiquee, l'appel echoue avec l'erreur EINVAL. De plus, zero ou plus des valeurs suivantes peuvent etre incluses dans flags (avec une operation OU bit a bit). FAN_MARK_DONT_FOLLOW If path is a symbolic link, mark the link itself, rather than the file to which it refers. (By default, fanotify_mark() dereferences path if it is a symbolic link.) FAN_MARK_ONLYDIR Si l'objet de systeme de fichiers a marquer n'est pas un repertoire, l'erreur ENOTDIR surviendra. FAN_MARK_IGNORE (depuis Linux 6.14) Mark the mount namespace specified by path. If path does not represent a mount namespace (e.g. /proc/pid/ns/mnt), the call fails with the error EINVAL. An fanotify group that was initialized with flag FAN_REPORT_MNT is required. FAN_MARK_MOUNT Mark the mount specified by path. If path is not itself a mount point, the mount containing path will be marked. All directories, subdirectories, and the contained files of the mount will be monitored. The events which require that filesystem objects are identified by file handles, such as FAN_CREATE, FAN_ATTRIB, FAN_MOVE, and FAN_DELETE_SELF, cannot be provided as a mask when flags contains FAN_MARK_MOUNT. Attempting to do so will result in the error EINVAL being returned. Use of this flag requires the CAP_SYS_ADMIN capability. FAN_MARK_FILESYSTEM (depuis Linux 4.20) Mark the filesystem specified by path. The filesystem containing path will be marked. All the contained files and directories of the filesystem from any mount point will be monitored. Use of this flag requires the CAP_SYS_ADMIN capability. FAN_MARK_IGNORED_MASK Les evenements de mask ne seront pas ajoutes ou supprimes du masque ignore. Remarquez que les attributs FAN_ONDIR et FAN_EVENT_ON_CHILD n'ont aucun effet quand ils sont fournis avec cet attribut. L'effet du positionnement des attributs FAN_ONDIR et FAN_EVENT_ON_CHILD dans le masque de marquage des evenements positionnes dans le masque ignore n'est pas defini et depend de la version du noyau Linux. En particulier, avant Linux 5.9, positionner un masque de marquage sur un fichier et une marque avec un masque ignore sur son repertoire parent ne ferait pas ignorer les evenements sur le fichier, meme avec l'attribut FAN_EVENT_ON_CHILD dans le masque de marquage du repertoire parent. Quand le masque ignore est mis a jour avec l'attribut FAN_MARK_IGNORED_MASK sur une marque precedemment mise a jour avec l'attribut FAN_MARK_IGNORE, la mise a jour echoue avec l'erreur EEXIST. FAN_MARK_IGNORE (depuis Linux 6.0, 5.15.154 et 5.10.220) Cet attribut a le meme effet que de positionner l'attribut FAN_MARK_IGNORED_MASK. Les evenements du mask seront ajoutes ou supprimes du masque ignore. Contrairement a l'attribut FAN_MARK_IGNORED_MASK, cet attribut a egalement pour effet que les attributs FAN_ONDIR et FAN_EVENT_ON_CHILD agissent sur le masque ignore. En particulier, sauf si l'attribut FAN_ONDIR est positionne avec FAN_MARK_IGNORE, les evenements sur les repertoires ne seront pas ignores. Si l'attribut FAN_EVENT_ON_CHILD est positionne avec FAN_MARK_IGNORE, les evenements sur les enfants seront ignores. Par exemple, une marque sur un repertoire associe a un masque avec l'evenement FAN_CREATE et l'attribut FAN_ONDIR et un masque ignore avec un evenement FAN_CREATE et sans l'attribut FAN_ONDIR ne gardera que les evenements de creation de sous-repertoires. Lors de l'utilisation de l'attribut FAN_MARK_IGNORE pour ajouter a un masque ignore une marque de montage, de systeme de fichiers ou d'inoeud de repertoire, l'attribut FAN_MARK_IGNORED_SURV_MODIFY doit etre indique. Un oubli de faire cela donne une erreur EINVAL ou EISDIR. FAN_MARK_IGNORED_SURV_MODIFY Le masque ignore survivra aux evenements de modification. Si cet attribut n'est pas positionne, le masque ignore est efface quand un evenement de modification se produit sur l'objet marque. Ne pas utiliser cet attribut se fait generalement pour supprimer des evenements (comme FAN_OPEN) sur un fichier specifique, jusqu'a ce que le contenu de ce dernier ne soit modifie. Il est beaucoup moins utile de supprimer des evenements sur tout un systeme de fichiers ou un montage, ou bien sur tous les fichiers d'un repertoire, jusqu'a ce qu'un contenu de fichier ne soit modifie. C'est pourquoi l'attribut FAN_MARK_IGNORE exige l'attribut FAN_MARK_IGNORED_SURV_MODIFY sur une marque d'inoeud de montage, de systeme de fichiers ou de repertoire. Cet attribut ne peut pas etre supprime d'une marque une fois qu'il a ete positionne. Quand le masque ignore est mis a jour sans cet attribut sur une marque precedemment mise a jour avec les attributs FAN_MARK_IGNORE et FAN_MARK_IGNORED_SURV_MODIFY, la mise a jour echoue avec l'erreur EEXIST. FAN_MARK_IGNORE_SURV C'est un synonyme de (FAN_MARK_IGNORE|FAN_MARK_IGNORED_SURV_MODIFY). FAN_MARK_EVICTABLE (since Linux 5.19, 5.15.154, and 5.10.220) Lorsqu'une marque d'inoeud est creee avec cet attribut, l'objet inoeud ne sera pas associe au cache de l'inoeud, permettant ainsi a l'objet inoeud d'etre supprime du cache d'inoeud quand la pression sur la memoire du systeme est elevee. La suppression de l'objet inoeud provoque aussi la perte de la marque suppressible. Quand le masque d'un inoeud suppressible est mis a jour sans utiliser l'attribut FAN_MARK_EVICATBLE, l'inoeud marque est epingle dans le cache d'inoeuds et la marque n'est plus suppressible. Quand le masque d'une marque d'inoeud non suppressible est mis a jour avec l'attribut FAN_MARK_EVICTABLE, la marque d'inoeud reste non suppressible et la mise a jour echoue avec l'erreur EEXIST. Les montages et les systemes de fichiers ne sont pas des objets suppressibles, donc si on essaie de creer une marque de montage ou de systeme de fichiers avec l'attribut FAN_MARK_EVICTABLE, une erreur EINVAL se produira. Par exemple, les marques d'inoeud peuvent etre utilisees en combinaison avec les marques de montage pour reduire la quantite d'evenements issus d'endroits sans interet. L'ecouteur d'evenements lit les evenements, verifie si le chemin indique dans l'evenement est digne d'interet et si ce n'est pas le cas, il positionne une marque avec un masque ignore sur le repertoire. Les marques d'inoeud suppressibles permettent d'utiliser cette methode pour un grand nombre de repertoires sans l'inconvenient de l'epinglage de tous les inoeuds et d'epuiser la memoire du systeme. mask definit les evenements a ecouter (ou a ignorer). C'est un masque de bits constitue par les valeurs suivantes : FAN_ACCESS Creer un evenement quand un fichier ou un repertoire (mais consultez BOGUES) est accede (en lecture). FAN_MODIFY Creer un evenement quand un fichier est modifie (en ecriture). FAN_CLOSE_WRITE Creer un evenement quand un fichier modifiable en ecriture est ferme. FAN_CLOSE_NOWRITE Creer un evenement quand soit un fichier, soit un repertoire, en lecture seule, est ferme. FAN_OPEN Creer un evenement quand soit un fichier, soit un repertoire est ouvert. FAN_OPEN_EXEC (depuis Linux 5.0) Creer un evenement quand un fichier est ouvert pour etre execute. Voir les NOTES pour plus de details. FAN_ATTRIB (depuis Linux 5.1) Creer un evenement quand les metadonnees d'un fichier ou d'un repertoire ont change. Un groupe fanotify qui identifie les objets de systeme de fichiers par des identificateurs de fichier est necessaire. FAN_CREATE (depuis Linux 5.1) Creer un evenement quand un fichier ou un repertoire a ete cree dans un repertoire parent marque. Un groupe fanotify qui identifie les objets de systeme de fichiers par des identificateurs de fichier est necessaire. FAN_DELETE (depuis Linux 5.1) Creer un evenement quand un fichier ou un repertoire a ete efface d'un repertoire parent marque. Un groupe fanotify qui identifie les objets de systeme de fichiers par des identificateurs de fichier est necessaire. FAN_DELETE_SELF (depuis Linux 5.1) Creer un evenement quand un fichier, ou meme un repertoire, marque est efface. Un groupe fanotify qui identifie les objets de systeme de fichiers par des identificateurs de fichier est necessaire. FAN_MOVED_FROM (depuis Linux 5.1) Creer un evenement quand un fichier ou un repertoire a ete deplace depuis un repertoire parent marque. Un groupe fanotify qui identifie les objets de systeme de fichiers par des identificateurs de fichier est necessaire. FAN_MOVED_TO (depuis Linux 5.1) Creer un evenement quand un fichier ou un repertoire est deplace vers un repertoire parent marque. Un groupe fanotify qui identifie les objets de systeme de fichiers par des identificateurs de fichier est necessaire. FAN_RENAME (since Linux 5.17, 5.15.154, and 5.10.220) Cet evenement contient les memes informations que celles fournies par les evenements FAN_MOVED_FROM et FAN_MOVED_TO mais il est represente par un seul evenement ayant jusqu'a deux enregistrements. Un groupe fanotify qui identifie les objets de systeme de fichiers par des identificateurs de fichiers est necessaire. Si l'objet de systeme de fichiers a marquer n'est pas un repertoire, l'erreur ENOTDIR sera generee. FAN_MOVE_SELF (depuis Linux 5.1) Creer un evenement quand un fichier, ou meme un repertoire, marque a ete deplace. Un groupe fanotify qui identifie les objets de systeme de fichiers par des identificateurs de fichier est necessaire. FAN_MNT_ATTACH FAN_MNT_DETACH (both since Linux 6.14) Create an event when a mount was attached to or detached from a marked mount namespace, respectively. An attempt to set this flag on an inode, mount, or filesystem mark will result in the error EINVAL. An fanotify group that was initialized with flag FAN_REPORT_MNT and the mark flag FAN_MARK_MNTNS are required. An additional information record of type FAN_EVENT_INFO_TYPE_MNT is returned with the event. See fanotify(7) for additional details. FAN_FS_ERROR (since Linux 5.16, 5.15.154, and 5.10.220) Create an event when a filesystem error leading to inconsistent filesystem metadata is detected. An additional information record of type FAN_EVENT_INFO_TYPE_ERROR is returned for each event in the read buffer. An fanotify group that identifies filesystem objects by file handles is required. Events of such type are dependent on support from the underlying filesystem. At the time of writing, only the ext4 filesystem reports FAN_FS_ERROR events. See fanotify(7) for additional details. FAN_OPEN_PERM Creer un evenement quand une permission d'ouvrir un fichier ou un repertoire est demandee. Un descripteur de fichier fanotify cree avec FAN_CLASS_PRE_CONTENT ou FAN_CLASS_CONTENT est necessaire. FAN_OPEN_EXEC_PERM (depuis Linux 5.0) Creer un evenement quand une permission d'ouvrir un fichier en execution est demandee. Un descripteur de fichier fanotify cree avec FAN_CLASS_PRE_CONTENT ou FAN_CLASS_CONTENT est necessaire. Voir les NOTES pour des details supplementaires. FAN_ACCESS_PERM Creer un evenement quand une permission de lire un fichier ou un repertoire est demandee. Un descripteur de fichier fanotify cree avec FAN_CLASS_PRE_CONTENT ou FAN_CLASS_CONTENT est necessaire. FAN_PRE_ACCESS (since Linux 6.14) Create an event before read or write access to a file range, that provides an opportunity for the event listener to modify the content of the file before access to the content in the specified range. An additional information record of type FAN_EVENT_INFO_TYPE_RANGE is returned for each event in the read buffer. An fanotify file descriptor created with FAN_CLASS_PRE_CONTENT is required. FAN_ONDIR Creer des evenements pour les repertoires -- par exemple quand opendir(3), readdir(3) (mais voir BOGUES) et closedir(3) sont appeles. Sans cet attribut, les evenements ne sont crees que pour les fichiers. Dans le contexte des evenements d'entree de repertoire tels que FAN_CREATE, FAN_DELETE, FAN_MOVED_FROM et FAN_MOVED_TO, il est necessaire d'indiquer le drapeau FAN_ONDIR afin de creer des evenements quand des entrees de sous-repertoire sont modifiees (a savoir mkdir(2) ou rmdir(2)). FAN_EVENT_ON_CHILD Des evenements pour les enfants directs des repertoires marques seront crees. L'attribut n'a pas d'effet lors du marquage de montages ou de systemes de fichiers. Remarquez qu'aucun evenement n'est cree pour les enfants des sous-repertoires des repertoires marques. De maniere plus specifique, les evenements de modification d'entree d'un repertoire FAN_CREATE, FAN_DELETE, FAN_MOVED_FROM et FAN_MOVED_TO ne sont pas generes pour des modifications effectuees dans les sous-repertoires de repertoires marques. Remarquez que les evenements FAN_DELETE_SELF et FAN_MOVE_SELF ne sont pas generes pour les enfants de repertoires marques. Pour surveiller des arborescences completes de repertoires, le montage ou le systeme de fichiers adequat doit etre marque. Les valeurs composees suivantes sont definies : FAN_CLOSE Un fichier est ferme (FAN_CLOSE_WRITE|FAN_CLOSE_NOWRITE). FAN_MOVE Un fichier ou un repertoire a ete deplace (FAN_MOVED_FROM|FAN_MOVED_TO). The filesystem object to be marked is determined by the file descriptor dirfd and the pathname specified in path: - If path is NULL, dirfd defines the filesystem object to be marked. - If path is NULL, and dirfd takes the special value AT_FDCWD, the current working directory is to be marked. - si path est absolu, il definit l'objet de systeme de fichiers a marquer et dirfd est ignore ; - If path is relative, and dirfd does not have the value AT_FDCWD, then the filesystem object to be marked is determined by interpreting path relative the directory referred to by dirfd. - If path is relative, and dirfd has the value AT_FDCWD, then the filesystem object to be marked is determined by interpreting path relative to the current working directory. (See openat(2) for an explanation of why the dirfd argument is useful.) VALEUR RENVOYEE S'il reussit, 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 ete passe dans fanotify_fd. EBADF path est relatif mais dirfd n'est ni AT_FDWCD ni un descripteur de fichier valable. EEXIST The filesystem object indicated by dirfd and path has a mark that was updated without the FAN_MARK_EVICTABLE flag, and the user attempted to update the mark with FAN_MARK_EVICTABLE flag. EEXIST The filesystem object indicated by dirfd and path has a mark that was updated with the FAN_MARK_IGNORE flag, and the user attempted to update the mark with FAN_MARK_IGNORED_MASK flag. EEXIST The filesystem object indicated by dirfd and path has a mark that was updated with the FAN_MARK_IGNORE and FAN_MARK_IGNORED_SURV_MODIFY flags, and the user attempted to update the mark only with FAN_MARK_IGNORE flag. EINVAL Une valeur incorrecte a ete passee dans flags ou mask, ou fanotify_fd n'etait pas un descripteur de fichier fanotify. EINVAL Le descripteur de fichier fanotify a ete ouvert avec FAN_CLASS_NOTIF ou le groupe fanotify identifie des systemes de fichiers par des identificateurs de fichier et le masque contient un attribut pour des evenements de permission (FAN_OPEN_PERM ou FAN_ACCESS_PERM). EINVAL Le groupe a ete initialise sans FAN_REPORT_FID mais un ou plusieurs types d'evenements indiques dans mask en ont besoin. EINVAL flags contient FAN_MARK_IGNORE et soit FAN_MARK_MOUNT ou FAN_MARK_FILESYSTEM, mais il ne contient pas FAN_MARK_IGNORED_SURV_MODIFY. EISDIR flags contains FAN_MARK_IGNORE, but does not contain FAN_MARK_IGNORED_SURV_MODIFY, and dirfd and path specify a directory. ENODEV The filesystem object indicated by dirfd and path is associated with a filesystem that reports zero fsid (e.g., fuse(4)). This error can be returned only with an fanotify group that identifies filesystem objects by file handles. Since Linux 6.8, this error can be returned when trying to add a mount or filesystem mark. ENOENT The filesystem object indicated by dirfd and path does not exist. This error also occurs when trying to remove a mark from an object which is not marked. ENOMEM La memoire necessaire n'a pas pu etre allouee. ENOSPC Le nombre de marques pour cet utilisateur depasse la limite et l'attribut FAN_UNLIMITED_MARKS n'etait pas indique quand le descripteur de fichier fanotify a ete cree avec fanotify_init(2). Voir fanotify(7) pour des details sur cette limite. ENOSYS Ce noyau n'implemente pas fanotify_mark(). L'interface de programmation fanotify n'est disponible que si le noyau a ete configure avec CONFIG_FANOTIFY. ENOTDIR flags contains FAN_MARK_ONLYDIR, and dirfd and path do not specify a directory. ENOTDIR mask contains FAN_RENAME, and dirfd and path do not specify a directory. ENOTDIR flags contains FAN_MARK_IGNORE, or the fanotify group was initialized with flag FAN_REPORT_TARGET_FID, and mask contains directory entry modification events (e.g., FAN_CREATE, FAN_DELETE), or directory event flags (e.g., FAN_ONDIR, FAN_EVENT_ON_CHILD), and dirfd and path do not specify a directory. EOPNOTSUPP The object indicated by path is associated with a filesystem that does not support the encoding of file handles. This error can be returned only with an fanotify group that identifies filesystem objects by file handles. Calling name_to_handle_at(2) with the flag AT_HANDLE_FID (since Linux 6.5) can be used as a test to check if a filesystem supports reporting events with file handles. EPERM L'operation n'est pas permise car l'appelant n'a pas la capacite requise. EXDEV The filesystem object indicated by path resides within a filesystem subvolume (e.g., btrfs(5)) which uses a different fsid than its root superblock. This error can be returned only with an fanotify group that identifies filesystem objects by file handles. Since Linux 6.8, this error will be returned when trying to add a mount or filesystem mark on a subvolume, when trying to add inode marks in different subvolumes, or when trying to add inode marks in a btrfs(5) subvolume and in another filesystem. Since Linux 6.8, this error will also be returned when trying to add marks in different filesystems, where one of the filesystems reports zero fsid (e.g., fuse(4)). STANDARDS Linux. HISTORIQUE Linux 2.6.37. NOTES FAN_OPEN_EXEC et FAN_OPEN_EXEC_PERM Quand on utilise FAN_OPEN_EXEC ou FAN_OPEN_EXEC_PERM dans le mask, des evenements de ces types ne seront renvoyes que lorsque l'execution directe d'un programme se produit. Plus particulierement, cela signifie que les evenements de ces types seront crees pour les fichiers ouverts en utilisant execve(2), execveat(2) ou uselib(2). Les evenements de ces types n'apparaitront pas quand un interpreteur est passe pour interpretation d'un fichier (ou s'il est en cours de lecture). De plus, si une marque a aussi ete placee sur l'editeur de liens dynamiques de Linux, un utilisateur doit s'attendre aussi a recevoir un evenement associe quand un objet ELF a ete ouvert avec succes en utilisant execve(2) ou execveat(2). Par exemple, si le binaire ELF suivant devait etre appele et si une marque FAN_OPEN_EXEC a ete placee sur / : $ /bin/echo toto Dans ce cas, l'application a l'ecoute devrait recevoir des evenements FAN_OPEN_EXEC, respectivement pour le binaire ELF et pour l'interpreteur : /bin/echo /lib64/ld-linux-x86-64.so.2 BOGUES Les bogues suivants etaient presents avant Linux 3.16 : - If flags contains FAN_MARK_FLUSH, dirfd, and path must specify a valid filesystem object, even though this object is not used. - readdir(2) ne cree pas d'evenement FAN_ACCESS ; - si fanotify_mark() est appele avec FAN_MARK_FLUSH, les valeurs incorrectes de flags ne sont pas verifiees. VOIR AUSSI fanotify_init(2), fanotify(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-Philippe MENGUAL 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.15 17 mai 2025 fanotify_mark(2)