2014-04-25 05:56:02 +00:00
|
|
|
.\" Copyright (C) 2013, Heinrich Schuchardt <xypron.glpk@gmx.de>
|
|
|
|
.\"
|
|
|
|
.\" %%%LICENSE_START(VERBATIM)
|
|
|
|
.\" Permission is granted to make and distribute verbatim copies of this
|
|
|
|
.\" manual provided the copyright notice and this permission notice are
|
|
|
|
.\" preserved on all copies.
|
|
|
|
.\"
|
|
|
|
.\" Permission is granted to copy and distribute modified versions of
|
|
|
|
.\" this manual under the conditions for verbatim copying, provided that
|
|
|
|
.\" the entire resulting derived work is distributed under the terms of
|
|
|
|
.\" a permission notice identical to this one.
|
|
|
|
.\"
|
|
|
|
.\" Since the Linux kernel and libraries are constantly changing, this
|
|
|
|
.\" manual page may be incorrect or out-of-date. The author(s) assume.
|
|
|
|
.\" no responsibility for errors or omissions, or for damages resulting.
|
|
|
|
.\" from the use of the information contained herein. The author(s) may.
|
|
|
|
.\" not have taken the same level of care in the production of this.
|
|
|
|
.\" manual, which is licensed free of charge, as they might when working.
|
|
|
|
.\" professionally.
|
|
|
|
.\"
|
|
|
|
.\" Formatted or processed versions of this manual, if unaccompanied by
|
|
|
|
.\" the source, must acknowledge the copyright and authors of this work.
|
|
|
|
.\" %%%LICENSE_END
|
locale.1, localedef.1, _exit.2, accept.2, access.2, acct.2, adjtimex.2, bdflush.2, bind.2, bpf.2, brk.2, chdir.2, chmod.2, chown.2, chroot.2, clock_nanosleep.2, clone.2, close.2, connect.2, copy_file_range.2, create_module.2, delete_module.2, dup.2, epoll_ctl.2, eventfd.2, execve.2, fallocate.2, fanotify_init.2, fcntl.2, flock.2, fork.2, fsync.2, futex.2, get_kernel_syms.2, getdomainname.2, getgroups.2, gethostname.2, getpagesize.2, getpeername.2, getsid.2, getsockname.2, getsockopt.2, gettimeofday.2, init_module.2, ioctl.2, ioctl_list.2, ioperm.2, iopl.2, kexec_load.2, kill.2, killpg.2, link.2, listen.2, llseek.2, lseek.2, madvise.2, memfd_create.2, mincore.2, mkdir.2, mknod.2, mmap.2, mount.2, nanosleep.2, nice.2, open.2, personality.2, pipe.2, poll.2, posix_fadvise.2, read.2, readahead.2, readlink.2, readv.2, recv.2, recvmmsg.2, rename.2, request_key.2, sched_setaffinity.2, sched_setattr.2, select.2, select_tut.2, semctl.2, semop.2, send.2, sendfile.2, sendmmsg.2, seteuid.2, setns.2, setpgid.2, setreuid.2, shutdown.2, sigaction.2, sigaltstack.2, signal.2, signalfd.2, sigpending.2, sigprocmask.2, sigsuspend.2, socketpair.2, splice.2, stat.2, statfs.2, stime.2, symlink.2, sync.2, syscall.2, syscalls.2, times.2, truncate.2, unlink.2, unshare.2, uselib.2, utimensat.2, vfork.2, vhangup.2, wait.2, wait4.2, write.2, a64l.3, abs.3, acos.3, acosh.3, addseverity.3, adjtime.3, aio_read.3, aio_write.3, asin.3, asinh.3, atan.3, atan2.3, atanh.3, atoi.3, backtrace.3, cbrt.3, ceil.3, cfree.3, clearenv.3, clock_getcpuclockid.3, clog10.3, cmsg.3, copysign.3, cos.3, cosh.3, ctermid.3, ctime.3, daemon.3, dirfd.3, div.3, dl_iterate_phdr.3, drand48.3, drand48_r.3, dysize.3, ecvt.3, ecvt_r.3, endian.3, erf.3, erfc.3, errno.3, exec.3, exp.3, exp2.3, expm1.3, fabs.3, fdim.3, ferror.3, fexecve.3, ffs.3, fgetgrent.3, fgetpwent.3, finite.3, flockfile.3, floor.3, fma.3, fmax.3, fmin.3, fmod.3, fopen.3, fpclassify.3, frexp.3, fseeko.3, fts.3, futimes.3, fwide.3, gamma.3, gcvt.3, getaddrinfo.3, getcwd.3, getdate.3, getdirentries.3, getdtablesize.3, getgrent.3, getgrent_r.3, getgrnam.3, getgrouplist.3, gethostbyname.3, gethostid.3, getline.3, getloadavg.3, getmntent.3, getnameinfo.3, getnetent_r.3, getpass.3, getprotoent_r.3, getpwent.3, getpwent_r.3, getpwnam.3, getrpcent_r.3, getservent_r.3, getspnam.3, getsubopt.3, getusershell.3, getutent.3, getw.3, gsignal.3, hypot.3, ilogb.3, inet.3, initgroups.3, insque.3, isalpha.3, isgreater.3, iswblank.3, j0.3, ldexp.3, lgamma.3, lio_listio.3, lockf.3, log.3, log10.3, log1p.3, log2.3, logb.3, lrint.3, lround.3, makedev.3, matherr.3, mbsnrtowcs.3, mkdtemp.3, mkfifo.3, mkstemp.3, mktemp.3, modf.3, mq_close.3, mq_getattr.3, mq_notify.3, mq_receive.3, mq_send.3, nan.3, nextafter.3, on_exit.3, open_memstream.3, opendir.3, perror.3, popen.3, posix_fallocate.3, posix_madvise.3, posix_memalign.3, posix_openpt.3, posix_spawn.3, pow.3, printf.3, profil.3, psignal.3, pthread_attr_setstack.3, pthread_setaffinity_np.3, putenv.3, putpwent.3, qecvt.3, rand.3, random.3, random_r.3, rcmd.3, readdir.3, realpath.3, remainder.3, remquo.3, rexec.3, rint.3, round.3, rpc.3, rpmatch.3, scalb.3, scalbln.3, scandir.3, scanf.3, seekdir.3, sem_wait.3, setbuf.3, setenv.3, setjmp.3, setnetgrent.3, siginterrupt.3, signbit.3, significand.3, sigset.3, sigsetops.3, sigvec.3, sigwait.3, sin.3, sinh.3, sleep.3, sockatmark.3, sqrt.3, statvfs.3, stpcpy.3, stpncpy.3, strdup.3, strerror.3, strftime.3, strlen.3, strnlen.3, strsep.3, strsignal.3, strtod.3, strtok.3, strtol.3, strtoul.3, syslog.3, system.3, tan.3, tanh.3, telldir.3, tempnam.3, termios.3, tgamma.3, timegm.3, timeradd.3, tmpfile.3, tmpnam.3, toascii.3, trunc.3, ttyslot.3, tzset.3, ualarm.3, unlocked_stdio.3, usleep.3, wcpcpy.3, wcpncpy.3, wcscasecmp.3, wcsdup.3, wcsncasecmp.3, wcsnlen.3, wcsnrtombs.3, wprintf.3, y0.3, pts.4, st.4, tty_ioctl.4, elf.5, gai.conf.5, group.5, locale.5, nsswitch.conf.5, proc.5, utmp.5, aio.7, capabilities.7, credentials.7, environ.7, epoll.7, fanotify.7, feature_test_macros.7, inotify.7, ip.7, mq_overview.7, namespaces.7, pipe.7, signal.7, socket.7, standards.7, svipc.7, symlink.7, time.7, unicode.7, unix.7: tstamp
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2016-03-15 03:46:01 +00:00
|
|
|
.TH FANOTIFY_INIT 2 2016-03-15 "Linux" "Linux Programmer's Manual"
|
2014-04-25 05:56:02 +00:00
|
|
|
.SH NAME
|
|
|
|
fanotify_init \- create and initialize fanotify group
|
|
|
|
.SH SYNOPSIS
|
|
|
|
.B #include <fcntl.h>
|
|
|
|
.br
|
|
|
|
.B #include <sys/fanotify.h>
|
|
|
|
.sp
|
|
|
|
.BI "int fanotify_init(unsigned int " flags ", unsigned int " event_f_flags );
|
|
|
|
.SH DESCRIPTION
|
|
|
|
For an overview of the fanotify API, see
|
|
|
|
.BR fanotify (7).
|
|
|
|
.PP
|
|
|
|
.BR fanotify_init ()
|
|
|
|
initializes a new fanotify group and returns a file descriptor for the event
|
|
|
|
queue associated with the group.
|
|
|
|
.PP
|
|
|
|
The file descriptor is used in calls to
|
|
|
|
.BR fanotify_mark (2)
|
2014-05-05 09:45:37 +00:00
|
|
|
to specify the files, directories, and mounts for which fanotify events
|
|
|
|
shall be created.
|
2014-04-25 05:56:02 +00:00
|
|
|
These events are received by reading from the file descriptor.
|
|
|
|
Some events are only informative, indicating that a file has been accessed.
|
2014-04-25 10:01:06 +00:00
|
|
|
Other events can be used to determine whether
|
|
|
|
another application is permitted to access a file or directory.
|
2014-04-25 05:56:02 +00:00
|
|
|
Permission to access filesystem objects is granted by writing to the file
|
|
|
|
descriptor.
|
|
|
|
.PP
|
|
|
|
Multiple programs may be using the fanotify interface at the same time to
|
|
|
|
monitor the same files.
|
|
|
|
.PP
|
|
|
|
In the current implementation, the number of fanotify groups per user is
|
|
|
|
limited to 128.
|
|
|
|
This limit cannot be overridden.
|
|
|
|
.PP
|
|
|
|
Calling
|
|
|
|
.BR fanotify_init ()
|
|
|
|
requires the
|
|
|
|
.B CAP_SYS_ADMIN
|
|
|
|
capability.
|
|
|
|
This constraint might be relaxed in future versions of the API.
|
2014-04-25 10:02:32 +00:00
|
|
|
Therefore, certain additional capability checks have been implemented as
|
2014-04-25 05:56:02 +00:00
|
|
|
indicated below.
|
|
|
|
.PP
|
|
|
|
The
|
|
|
|
.I flags
|
|
|
|
argument contains a multi-bit field defining the notification class of the
|
2014-05-05 09:45:37 +00:00
|
|
|
listening application and further single bit fields specifying the behavior
|
|
|
|
of the file descriptor.
|
2014-04-25 05:56:02 +00:00
|
|
|
.PP
|
2014-05-05 09:45:37 +00:00
|
|
|
If multiple listeners for permission events exist,
|
|
|
|
the notification class is used to establish the sequence
|
|
|
|
in which the listeners receive the events.
|
2014-04-25 05:56:02 +00:00
|
|
|
.PP
|
2014-04-25 10:03:11 +00:00
|
|
|
Only one of the following notification classes may be specified in
|
|
|
|
.IR flags :
|
2014-04-25 05:56:02 +00:00
|
|
|
.TP
|
|
|
|
.B FAN_CLASS_PRE_CONTENT
|
|
|
|
This value allows the receipt of events notifying that a file has been
|
|
|
|
accessed and events for permission decisions if a file may be accessed.
|
|
|
|
It is intended for event listeners that need to access files before they
|
|
|
|
contain their final data.
|
2014-05-05 09:45:37 +00:00
|
|
|
This notification class might be used by hierarchical storage managers,
|
|
|
|
for example.
|
2014-04-25 05:56:02 +00:00
|
|
|
.TP
|
|
|
|
.B FAN_CLASS_CONTENT
|
|
|
|
This value allows the receipt of events notifying that a file has been
|
|
|
|
accessed and events for permission decisions if a file may be accessed.
|
2014-05-05 09:45:37 +00:00
|
|
|
It is intended for event listeners that need to access files when they
|
|
|
|
already contain their final content.
|
2014-04-25 05:56:02 +00:00
|
|
|
This notification class might be used by malware detection programs, for
|
|
|
|
example.
|
|
|
|
.TP
|
|
|
|
.B FAN_CLASS_NOTIF
|
|
|
|
This is the default value.
|
|
|
|
It does not need to be specified.
|
|
|
|
This value only allows the receipt of events notifying that a file has been
|
|
|
|
accessed.
|
|
|
|
Permission decisions before the file is accessed are not possible.
|
|
|
|
.PP
|
|
|
|
Listeners with different notification classes will receive events in the
|
2014-04-25 10:04:49 +00:00
|
|
|
order
|
2014-04-25 05:56:02 +00:00
|
|
|
.BR FAN_CLASS_PRE_CONTENT ,
|
|
|
|
.BR FAN_CLASS_CONTENT ,
|
|
|
|
.BR FAN_CLASS_NOTIF .
|
2014-05-07 06:55:36 +00:00
|
|
|
The order of notification for listeners in the same notification class
|
|
|
|
is undefined.
|
2014-04-25 05:56:02 +00:00
|
|
|
.PP
|
2014-05-07 06:55:36 +00:00
|
|
|
The following bits can additionally be set in
|
2014-04-25 05:56:02 +00:00
|
|
|
.IR flags :
|
|
|
|
.TP
|
|
|
|
.B FAN_CLOEXEC
|
2014-05-07 06:55:36 +00:00
|
|
|
Set the close-on-exec flag
|
2014-04-25 05:56:02 +00:00
|
|
|
.RB ( FD_CLOEXEC )
|
|
|
|
on the new file descriptor.
|
|
|
|
See the description of the
|
|
|
|
.B O_CLOEXEC
|
|
|
|
flag in
|
|
|
|
.BR open (2).
|
|
|
|
.TP
|
|
|
|
.B FAN_NONBLOCK
|
2014-05-07 06:55:36 +00:00
|
|
|
Enable the nonblocking flag
|
2014-04-25 05:56:02 +00:00
|
|
|
.RB ( O_NONBLOCK )
|
|
|
|
for the file descriptor.
|
|
|
|
Reading from the file descriptor will not block.
|
2014-04-25 10:05:48 +00:00
|
|
|
Instead, if no data is available,
|
2014-04-25 05:56:02 +00:00
|
|
|
.BR read (2)
|
2014-04-25 10:05:48 +00:00
|
|
|
will fail with the error
|
|
|
|
.BR EAGAIN .
|
2014-04-25 05:56:02 +00:00
|
|
|
.TP
|
|
|
|
.B FAN_UNLIMITED_QUEUE
|
2014-05-07 06:55:36 +00:00
|
|
|
Remove the limit of 16384 events for the event queue.
|
|
|
|
Use of this flag requires the
|
2014-04-25 05:56:02 +00:00
|
|
|
.B CAP_SYS_ADMIN
|
|
|
|
capability.
|
|
|
|
.TP
|
|
|
|
.B FAN_UNLIMITED_MARKS
|
2014-05-07 06:55:36 +00:00
|
|
|
Remove the limit of 8192 marks.
|
|
|
|
Use of this flag requires the
|
2014-04-25 05:56:02 +00:00
|
|
|
.B CAP_SYS_ADMIN
|
|
|
|
capability.
|
|
|
|
.PP
|
2014-05-07 06:55:36 +00:00
|
|
|
The
|
2014-04-25 05:56:02 +00:00
|
|
|
.I event_f_flags
|
2014-05-07 06:55:36 +00:00
|
|
|
argument
|
|
|
|
defines the file status flags that will be set on the open file descriptions
|
|
|
|
that are created for fanotify events.
|
|
|
|
For details of these flags, see the description of the
|
2014-04-25 05:56:02 +00:00
|
|
|
.I flags
|
2014-05-07 06:55:36 +00:00
|
|
|
values in
|
|
|
|
.BR open (2).
|
2014-05-15 17:35:44 +00:00
|
|
|
.I event_f_flags
|
2014-05-18 07:46:30 +00:00
|
|
|
includes a multi-bit field for the access mode.
|
2014-05-15 17:35:44 +00:00
|
|
|
This field can take the following values:
|
2014-04-25 05:56:02 +00:00
|
|
|
.TP
|
|
|
|
.B O_RDONLY
|
|
|
|
This value allows only read access.
|
|
|
|
.TP
|
|
|
|
.B O_WRONLY
|
|
|
|
This value allows only write access.
|
|
|
|
.TP
|
|
|
|
.B O_RDWR
|
|
|
|
This value allows read and write access.
|
2014-05-15 17:35:44 +00:00
|
|
|
.PP
|
|
|
|
Additional bits can be set in
|
|
|
|
.IR event_f_flags .
|
|
|
|
The most useful values are:
|
2014-04-25 05:56:02 +00:00
|
|
|
.TP
|
|
|
|
.B O_LARGEFILE
|
2014-05-07 06:55:36 +00:00
|
|
|
Enable support for files exceeding 2 GB.
|
2014-04-25 05:56:02 +00:00
|
|
|
Failing to set this flag will result in an
|
|
|
|
.B EOVERFLOW
|
2014-05-05 09:45:37 +00:00
|
|
|
error when trying to open a large file which is monitored by
|
|
|
|
an fanotify group on a 32-bit system.
|
2014-05-15 17:35:44 +00:00
|
|
|
.TP
|
2016-02-06 15:50:35 +00:00
|
|
|
.BR O_CLOEXEC " (since Linux 3.18)"
|
|
|
|
.\" commit 0b37e097a648aa71d4db1ad108001e95b69a2da4
|
2014-05-15 17:35:44 +00:00
|
|
|
Enable the close-on-exec flag for the file descriptor.
|
2014-05-18 07:46:30 +00:00
|
|
|
See the description of the
|
|
|
|
.B O_CLOEXEC
|
|
|
|
flag in
|
|
|
|
.BR open (2)
|
|
|
|
for reasons why this may be useful.
|
2014-05-15 17:35:44 +00:00
|
|
|
.PP
|
|
|
|
The following are also allowable:
|
|
|
|
.BR O_APPEND ,
|
|
|
|
.BR O_DSYNC ,
|
|
|
|
.BR O_NOATIME ,
|
|
|
|
.BR O_NONBLOCK ,
|
|
|
|
and
|
|
|
|
.BR O_SYNC .
|
2014-05-18 07:46:30 +00:00
|
|
|
Specifying any other flag in
|
|
|
|
.I event_f_flags
|
|
|
|
yields the error
|
2014-05-15 17:35:44 +00:00
|
|
|
.B EINVAL
|
|
|
|
(but see BUGS).
|
2014-04-25 05:56:02 +00:00
|
|
|
.SH RETURN VALUE
|
|
|
|
On success,
|
|
|
|
.BR fanotify_init ()
|
|
|
|
returns a new file descriptor.
|
2014-04-25 10:11:08 +00:00
|
|
|
On error, \-1 is returned, and
|
2014-04-25 05:56:02 +00:00
|
|
|
.I errno
|
|
|
|
is set to indicate the error.
|
|
|
|
.SH ERRORS
|
|
|
|
.TP
|
|
|
|
.B EINVAL
|
|
|
|
An invalid value was passed in
|
2014-05-15 17:35:44 +00:00
|
|
|
.I flags
|
|
|
|
or
|
|
|
|
.IR event_f_flags .
|
2014-04-25 05:56:02 +00:00
|
|
|
.B FAN_ALL_INIT_FLAGS
|
2014-05-15 17:35:44 +00:00
|
|
|
defines all allowable bits for
|
|
|
|
.IR flags .
|
2014-04-25 05:56:02 +00:00
|
|
|
.TP
|
|
|
|
.B EMFILE
|
2014-05-07 06:55:36 +00:00
|
|
|
The number of fanotify groups for this user exceeds 128.
|
2014-04-25 05:56:02 +00:00
|
|
|
.TP
|
2015-12-27 15:26:07 +00:00
|
|
|
.B
|
|
|
|
The per-process limit on the number of open file descriptors has been reached.
|
|
|
|
.TP
|
2014-04-25 05:56:02 +00:00
|
|
|
.B ENOMEM
|
|
|
|
The allocation of memory for the notification group failed.
|
|
|
|
.TP
|
2014-05-01 05:47:11 +00:00
|
|
|
.B ENOSYS
|
|
|
|
This kernel does not implement
|
|
|
|
.BR fanotify_init ().
|
2014-05-07 06:55:36 +00:00
|
|
|
The fanotify API is available only if the kernel was configured with
|
|
|
|
.BR CONFIG_FANOTIFY .
|
2014-05-01 05:47:11 +00:00
|
|
|
.TP
|
2014-04-25 05:56:02 +00:00
|
|
|
.B EPERM
|
|
|
|
The operation is not permitted because the caller lacks the
|
|
|
|
.B CAP_SYS_ADMIN
|
|
|
|
capability.
|
|
|
|
.SH VERSIONS
|
|
|
|
.BR fanotify_init ()
|
|
|
|
was introduced in version 2.6.36 of the Linux kernel and enabled in version
|
|
|
|
2.6.37.
|
iconv.1, localedef.1, access.2, execveat.2, fanotify_init.2, futex.2, ioctl_fat.2, mount.2, ftw.3, sd.4, tty_ioctl.4, fanotify.7, futex.7, posixoptions.7, iconvconfig.8: srcfix: Remove useless quotes from .SS and .SH sections
Signed-off-by: Stéphane Aulery <saulery@free.fr>
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2015-03-08 02:03:52 +00:00
|
|
|
.SH CONFORMING TO
|
2014-04-25 05:56:02 +00:00
|
|
|
This system call is Linux-specific.
|
2014-05-01 14:47:39 +00:00
|
|
|
.SH BUGS
|
2014-09-29 14:25:53 +00:00
|
|
|
As of Linux 3.17,
|
|
|
|
the following bug exists:
|
|
|
|
.IP * 3
|
|
|
|
.\" FIXME . Patch proposed: https://lkml.org/lkml/2014/9/24/967
|
2014-09-29 14:27:06 +00:00
|
|
|
The
|
2014-09-29 14:25:53 +00:00
|
|
|
.B O_CLOEXEC
|
2014-09-29 14:27:06 +00:00
|
|
|
is ignored when passed in
|
|
|
|
.IR event_f_flags .
|
2014-09-29 14:25:53 +00:00
|
|
|
.PP
|
2014-09-29 14:32:23 +00:00
|
|
|
The following bug was present in Linux kernels before version 3.14:
|
2014-05-01 14:47:39 +00:00
|
|
|
.IP * 3
|
2014-09-29 14:32:23 +00:00
|
|
|
.\" Fixed by commit 48149e9d3a7e924010a0daab30a6197b7d7b6580
|
2014-05-01 20:01:46 +00:00
|
|
|
The
|
2014-05-01 14:47:39 +00:00
|
|
|
.I event_f_flags
|
2014-05-01 20:13:35 +00:00
|
|
|
argument is not checked for invalid flags.
|
2014-05-01 20:01:46 +00:00
|
|
|
Flags that are intended only for internal use,
|
|
|
|
such as
|
2014-05-01 14:47:39 +00:00
|
|
|
.BR FMODE_EXEC ,
|
2014-05-01 20:01:46 +00:00
|
|
|
can be set, and will consequently be set for the file descriptors
|
|
|
|
returned when reading from the fanotify file descriptor.
|
iconv.1, localedef.1, access.2, execveat.2, fanotify_init.2, futex.2, ioctl_fat.2, mount.2, ftw.3, sd.4, tty_ioctl.4, fanotify.7, futex.7, posixoptions.7, iconvconfig.8: srcfix: Remove useless quotes from .SS and .SH sections
Signed-off-by: Stéphane Aulery <saulery@free.fr>
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2015-03-08 02:03:52 +00:00
|
|
|
.SH SEE ALSO
|
2014-04-25 05:56:02 +00:00
|
|
|
.BR fanotify_mark (2),
|
|
|
|
.BR fanotify (7)
|