fanotify_mark(2) - wariua/manpages-ko GitHub Wiki
fanotify_mark - νμΌ μμ€ν κ°μ²΄μ λν fanotify νμ μΆκ°, μ κ±°, λ³κ²½νκΈ°
#include <sys/fanotify.h>
int fanotify_mark(int fanotify_fd, unsigned int flags,
uint64_t mask, int dirfd, const char *pathname);
fanotify APIμ λν μκ°λ fanotify(7)λ₯Ό 보λΌ.
fanotify_mark()
λ νμΌ μμ€ν
κ°μ²΄μ fanotify νμλ₯Ό μΆκ°νκ±°λ μ κ±°νκ±°λ λ³κ²½νλ€. νμλ₯Ό νλ νμΌ μμ€ν
κ°μ²΄μ λν΄ νΈμΆμκ° μ½κΈ° κΆνμ κ°μ§κ³ μμ΄μΌ νλ€.
fanotify_fd
μΈμλ fanotify_init(2)μ΄ λ°νν νμΌ λμ€ν¬λ¦½ν°μ΄λ€.
flags
λ μνν λ³κ²½ λμμ κΈ°μ νλ λΉνΈ λ§μ€ν¬μ΄λ€. λ€μ κ°λ€ μ€ μ νν νλλ₯Ό ν¬ν¨ν΄μΌ νλ€.
FAN_MARK_ADD
- νμ λ§μ€ν¬μ (λλ 무μ λ§μ€ν¬μ)
mask
μ μ΄λ²€νΈλ€μ μΆκ°νλ€.mask
κ° λΉμ΄ μμ§ μμμΌ νλ©°, μ κ·Έλ¬λ©΄EINVAL
μ€λ₯κ° λ°μνλ€. FAN_MARK_REMOVE
- νμ λ§μ€ν¬μμ (λλ 무μ λ§μ€ν¬μμ)
mask
μΈμμ μ΄λ²€νΈλ€μ μ κ±°νλ€.mask
κ° λΉμ΄ μμ§ μμμΌ νλ©°, μ κ·Έλ¬λ©΄EINVAL
μ€λ₯κ° λ°μνλ€. FAN_MARK_FLUSH
- fanotify κ·Έλ£Ήμμ λͺ¨λ νμΌ μμ€ν
νμ, λλ λͺ¨λ λ§μ΄νΈ νμ, λλ λͺ¨λ λλ ν°λ¦¬ λ° νμΌ νμλ₯Ό μ κ±°νλ€.
flags
μFAN_MARK_MOUNT
κ° μμΌλ©΄ κ·Έλ£Ήμμ λ§μ΄νΈμ λν νμλ€μ λͺ¨λ μ κ±°νλ€.flags
μFAN_MARK_FILESYSTEM
μ΄ μμΌλ©΄ κ·Έλ£Ήμμ νμΌ μμ€ν μ λν νμλ€μ λͺ¨λ μ κ±°νλ€. κ·Έλ μ§ μμΌλ©΄ λλ ν°λ¦¬ λ° νμΌμ λν νμλ€μ λͺ¨λ μ κ±°νλ€.FAN_MARK_MOUNT
μFAN_MARK_FILESYSTEM
μΈμ νλκ·Έλ λ νλκ·Έ λͺ¨λλ₯ΌFAN_MARK_FLUSH
μ ν¨κ» μ¬μ©ν μ μλ€.mask
λ 무μνλ€.
μ κ°λ€ μ€ μ무κ²λ μ§μ νμ§ μκ±°λ μ¬λ¬ κ°μ§λ₯Ό μ§μ νλ©΄ νΈμΆμ΄ EINVAL
μ€λ₯λ‘ μ€ν¨νλ€.
μΆκ°λ‘ flags
μ λ€μ κ°λ€μ 0κ° μ΄μ OR ν μ μλ€.
FAN_MARK_DONT_FOLLOW
-
pathname
μ΄ μ¬λ³Όλ¦ λ§ν¬μ΄λ©΄ κ°λ¦¬ν€λ νμΌμ΄ μλλΌ λ§ν¬ μ체μ νμλ₯Ό νλ€. (κΈ°λ³Έμ μΌλ‘fanotify_mark()
λpathname
μ΄ μ¬λ³Όλ¦ λ§ν¬μ΄λ©΄ μμ°Έμ‘°λ₯Ό νλ€.) FAN_MARK_ONLYDIR
- νμν νμΌ μμ€ν
κ°μ²΄κ° λλ ν°λ¦¬κ° μλλ©΄
ENOTDIR
μ€λ₯λ₯Ό μ κΈ°νλ€. FAN_MARK_MOUNT
-
pathname
μΌλ‘ μ§μ ν λ§μ΄νΈ μ§μ μ νμλ₯Ό νλ€.pathname
μμ²΄κ° λ§μ΄νΈ μ§μ μ΄ μλλ©΄pathname
μ λ΄μ λ§μ΄νΈ μ§μ μ νμλ₯Ό νκ² λλ€. λ§μ΄νΈ μ§μ μ λͺ¨λ λλ ν°λ¦¬μ μλΈλλ ν°λ¦¬, κ·Έλ¦¬κ³ κ±°κΈ° λ΄κΈ΄ νμΌλ€μ κ°μνλ€. νμΌ λμ€ν¬λ¦½ν°fanotify_fd
λ₯ΌFAN_REPORT_FID
νλκ·Έλ‘ μ΄κΈ°ν νκ±°λmask
μ μ λλ ν°λ¦¬ λ³κ²½ μ΄λ²€νΈλ₯Ό νλλΌλ μ€ κ²½μ°μλ μ΄ κ°μ μΈ μ μλ€. κ·Έλ κ² ν΄μ μλνλ©΄ μ€λ₯EINVAL
μ΄ λ°νλλ€. -
FAN_MARK_FILESYSTEM
(리λ μ€ 4.20λΆν°) -
pathname
μΌλ‘ μ§μ ν νμΌ μμ€ν μ νμλ₯Ό νλ€.pathname
μ λ΄μ νμΌ μμ€ν μ νμλ₯Ό νκ² λλ€. λ§μ΄νΈ μ§μ μ΄ μ΄λλ κ·Έ νμΌ μμ€ν μ λ΄κΈ΄ λͺ¨λ νμΌκ³Ό λλ ν°λ¦¬λ₯Ό κ°μνλ€. FAN_MARK_IGNORED_MASK
- 무μ λ§μ€ν¬μμ
mask
μ μ΄λ²€νΈλ€μ μΆκ°νκ±°λ μ κ±°νλ€. FAN_MARK_IGNORED_SURV_MODIFY
- 무μ λ§μ€ν¬κ° λ³κ²½ μ΄λ²€νΈλ₯Ό κ±°μΉλ©° μ μ§λλ€. μ΄ νλκ·Έκ° μ€μ λΌ μμ§ μμΌλ©΄ 무μνλ νμΌμ΄λ λλ ν°λ¦¬μ λ³κ²½ μ΄λ²€νΈκ° λ°μν λ κ·Έ 무μ λ§μ€ν¬λ₯Ό μμ€λ€.
mask
λ μ΄λ€ μ΄λ²€νΈλ₯Ό μ²μ·¨ν μ§ (λλ 무μν μ§) μ§μ νλ€. λ€μ κ°λ€λ‘ μ΄λ€μ§ λΉνΈ λ§μ€ν¬μ΄λ€.
FAN_ACCESS
- νμΌμ΄λ λλ ν°λ¦¬μ (BUGS μ°Έκ³ ) μ κ·Ό(μ½κΈ°)μ΄ μ΄λ€μ§λ©΄ μ΄λ²€νΈ μμ±.
FAN_MODIFY
- νμΌμ΄ λ³κ²½(μ°κΈ°)λλ©΄ μ΄λ²€νΈ μμ±.
FAN_CLOSE_WRITE
- μ°κΈ° κ°λ₯ νμΌμ΄ λ«νλ©΄ μ΄λ²€νΈ μμ±.
FAN_CLOSE_NOWRITE
- μ½κΈ° μ μ© νμΌμ΄λ λλ ν°λ¦¬κ° λ«νλ©΄ μ΄λ²€νΈ μμ±.
FAN_OPEN
- νμΌμ΄λ λλ ν°λ¦¬κ° μ΄λ¦¬λ©΄ μ΄λ²€νΈ μμ±.
-
FAN_OPEN_EXEC
(리λ μ€ 5.0λΆν°) - νμΌμ΄ μ€ννλ €λ μλλ‘ μ΄λ¦¬λ©΄ μ΄λ²€νΈ μμ±. NOTESμ μΆκ° μ€λͺ μ°Έκ³ .
FAN_ATTRIB
- νμΌμ΄λ λλ ν°λ¦¬μ λ©νλ°μ΄ν°κ° λ°λμμ λ μ΄λ²€νΈ μμ±.
FAN_CREATE
- νμλ λΆλͺ¨ λλ ν°λ¦¬ λ΄μμ νμΌμ΄λ λλ ν°λ¦¬κ° μμ±λμ λ μ΄λ²€νΈ μμ±.
FAN_DELETE
- νμλ λΆλͺ¨ λλ ν°λ¦¬ λ΄μμ νμΌμ΄λ λλ ν°λ¦¬κ° μμ λμ λ μ΄λ²€νΈ μμ±.
FAN_DELETE_SELF
- νμλ νμΌμ΄λ λλ ν°λ¦¬ μμ²΄κ° μμ λμ λ μ΄λ²€νΈ μμ±.
FAN_MOVED_FROM
- νμλ λΆλͺ¨ λλ ν°λ¦¬μ μλ νμΌμ΄λ λλ ν°λ¦¬κ° μ΄λλμ λ μ΄λ²€νΈ μμ±.
FAN_MOVED_TO
- νμλ λΆλͺ¨ λλ ν°λ¦¬λ‘ νμΌμ΄λ λλ ν°λ¦¬κ° μ΄λλμ λ μ΄λ²€νΈ μμ±.
FAN_Q_OVERFLOW
- μ΄λ²€νΈ ν λμΉ¨μ΄ λ°μνλ©΄ μ΄λ²€νΈ μμ±. fanotify_init(2)μμ
FAN_UNLIMITED_QUEUE
λ₯Ό μ€μ νμ§ μμΌλ©΄ μ΄λ²€νΈ ν ν¬κΈ°κ° 16384κ° νλͺ©μΌλ‘ μ νλλ€. FAN_OPEN_PERM
- νμΌμ΄λ λλ ν°λ¦¬ μ΄κΈ° μμ²μ΄ μμΌλ©΄ μ΄λ²€νΈ μμ±.
FAN_CLASS_PRE_CONTENT
λFAN_CLASS_CONTENT
λ‘ μμ±ν fanotify νμΌ λμ€ν¬λ¦½ν°κ° νμνλ€. -
FAN_OPEN_EXEC_PERM
(리λ μ€ 5.0λΆν°) - μ€νμ μν νμΌ μ΄κΈ° μμ²μ΄ μμΌλ©΄ μ΄λ²€νΈ μμ±.
FAN_CLASS_PRE_CONTENT
λFAN_CLASS_CONTENT
λ‘ μμ±ν fanotify νμΌ λμ€ν¬λ¦½ν°κ° νμνλ€. NOTESμ μΆκ° μ€λͺ μ°Έκ³ . FAN_ACCESS_PERM
- νμΌμ΄λ λλ ν°λ¦¬ μ½κΈ° μμ²μ΄ μμΌλ©΄ μ΄λ²€νΈ μμ±.
FAN_CLASS_PRE_CONTENT
λFAN_CLASS_CONTENT
λ‘ μμ±ν fanotify νμΌ λμ€ν¬λ¦½ν°κ° νμνλ€. FAN_ONDIR
- λλ ν°λ¦¬μ λν΄ (κ°λ Ή opendir(3), readdir(3) (λ¨ BUGS μ°Έκ³ ), closedir(3)μ΄ νΈμΆλ λ) μ΄λ²€νΈ μμ±. μ΄ νλκ·Έκ° μμΌλ©΄ νμΌμ λν μ΄λ²€νΈλ§ μκΈ΄λ€. νμΌ λμ€ν¬λ¦½ν°
fanotify_fd
λ₯ΌFAN_REPORT_FID
νλκ·Έλ‘ μ΄κΈ°ν νμ λλ§FAN_ONDIR
νλκ·Έλ₯Ό λ³΄κ³ νλ€.FAN_CREATE
,FAN_DELETE
,FAN_MOVED_FROM
,FAN_MOVED_TO
κ°μ λλ ν°λ¦¬ νλͺ© μ΄λ²€νΈ λ§₯λ½μμ μλΈλλ ν°λ¦¬ νλͺ©λ€μ΄ λ³κ²½(μ¦ mkdir(2)/rmdir(2))λ λ μ΄λ²€νΈκ° μμ±λκ² νλ €λ©΄FAN_ONDIR
νλκ·Έλ₯Ό μ§μ ν΄μΌ νλ€. μ΄ νλκ·Έλ μ΄λ²€νΈμμ λ¨λ μΌλ‘ λ³΄κ³ λλ μΌμ΄ μ λ μμΌλ©° νμ λ€λ₯Έ μ’ λ₯μ μ΄λ²€νΈμ ν¨κ» μ 곡λλ€. FAN_EVENT_ON_CHILD
- νμν λλ ν°λ¦¬μ μ§μ μμλ€μ λν μ΄λ²€νΈλ₯Ό μμ±νλ€. λ§μ΄νΈ λ° νμΌ μμ€ν μ νμν λλ μ΄ νλκ·Έμ μ무 ν¨κ³Όκ° μλ€. μ°Έκ³ λ‘ νμν λλ ν°λ¦¬μ μλΈλλ ν°λ¦¬μ μμλ€μ λν΄μ μ΄λ²€νΈκ° μμ±λμ§ μλλ€. λλ ν°λ¦¬ νΈλ¦¬ μ 체λ₯Ό κ°μνλ €λ©΄ μ μ ν λ§μ΄νΈμ νμλ₯Ό ν΄μΌ νλ€.
λ€μ μ‘°ν© κ°μ΄ μ μλΌ μλ€.
FAN_CLOSE
- νμΌμ΄ λ«νμ. (
FAN_CLOSE_WRITE|FAN_CLOSE_NOWRITE
) FAN_MOVE
- νμΌμ΄λ λλ ν°λ¦¬κ° μ΄λλμ. (
FAN_MOVED_FROM|FAN_MOVED_TO
)
νμΌ λμ€ν¬λ¦½ν° dirfd
μ pathname
μ μ§μ ν κ²½λ‘λͺ
μ μ¨μ νμλ₯Ό ν νμΌ μμ€ν
κ°μ²΄λ₯Ό κ²°μ νλ€.
-
pathname
μ΄ NULLμ΄λ©΄dirfd
κ° νμν νμΌ μμ€ν κ°μ²΄λ₯Ό κ²°μ νλ€. -
pathname
μ΄ NULLμ΄κ³dirfd
κ° νΉμ κ°AT_FDCWD
μ΄λ©΄ νμ¬ μμ λλ ν°λ¦¬μ νμλ₯Ό νλ€. -
pathname
μ΄ μ λ κ²½λ‘μ΄λ©΄ νμν νμΌ μμ€ν κ°μ²΄λ₯Ό κ²°μ νλ©°,dirfd
λ 무μλλ€. -
pathname
μ΄ μλ κ²½λ‘μ΄κ³dirfd
μ κ°μ΄AT_FDCWD
κ° μλλ©΄dirfd
κ° κ°λ¦¬ν€λ λλ ν°λ¦¬λ₯Ό κΈ°μ€μΌλ‘pathname
μ ν΄μν΄μ νμν νμΌ μμ€ν κ°μ²΄λ₯Ό κ²°μ νλ€. -
pathname
μ΄ μλ κ²½λ‘μ΄κ³dirfd
μ κ°μ΄AT_FDCWD
μ΄λ©΄ νμ¬ μμ λλ ν°λ¦¬λ₯Ό κΈ°μ€μΌλ‘pathname
μ ν΄μν΄μ νμν νμΌ μμ€ν κ°μ²΄λ₯Ό κ²°μ νλ€.
μ±κ³΅ μ fanotify_mark()
λ 0μ λ°ννλ€. μ€λ₯ μ -1μ λ°ννλ©° μ€λ₯λ₯Ό λνλ΄λλ‘ errno
λ₯Ό μ€μ νλ€.
EBADF
-
fanotify_fd
λ‘ μ ν¨νμ§ μμ νμΌ λμ€ν¬λ¦½ν°λ₯Ό 쀬λ€. EINVAL
-
flags
λmask
μ μ ν¨νμ§ μμ κ°μ 쀬λ€. λλfanotify_fd
κ° fanotify νμΌ λμ€ν¬λ¦½ν°κ° μλλ€. EINVAL
- fanotify νμΌ λμ€ν¬λ¦½ν°λ₯Ό
FAN_CLASS_NOTIF
λFAN_REPORT_FID
λ‘ μ΄μλλ°mask
μ νκ° μ΄λ²€νΈλ₯Ό μν νλκ·Έ(FAN_OPEN_PERM
μ΄λFAN_ACCESS_PERM
)κ° μλ€. ENOENT
-
dirfd
μpathname
μΌλ‘ λνλΈ νμΌ μμ€ν κ°μ²΄κ° μ‘΄μ¬νμ§ μλλ€. νμ μ λ κ°μ²΄μμ νμλ₯Ό μ κ±°νλ € ν λλ μ΄ μ€λ₯κ° μκΈ΄λ€. ENOMEM
- νμν λ©λͺ¨λ¦¬λ₯Ό ν λΉν μ μλ€.
ENOSPC
- νμ κ°μκ° μ νκ°μΈ 8192κ°λ₯Ό μ΄κ³ΌνμΌλ©° fanotify_init(2)μΌλ‘ fanotify νμΌ λμ€ν¬λ¦½ν°λ₯Ό μμ±ν λ
FAN_UNLIMITED_MARKS
νλκ·Έλ₯Ό μ§μ νμ§ μμλ€. ENOSYS
- 컀λμμ
fanotify_mark()
λ₯Ό ꡬννκ³ μμ§ μλ€. 컀λμCONFIG_FANOTIFY
λ‘ κ΅¬μ±ν κ²½μ°μλ§ fanotify APIλ₯Ό μΈ μ μλ€. ENOTDIR
-
flags
μFAN_MARK_ONLYDIR
μ΄ μλλ°dirfd
μpathname
μ΄ λλ ν°λ¦¬λ₯Ό λνλ΄μ§ μλλ€. EXDEV
-
pathname
μ΄ κ°λ¦¬ν€λ νμΌ μμ€ν κ°μ²΄κ° λ£¨νΈ μνΌλΈλ‘κ³Ό λ€λ₯Έfsid
λ₯Ό μ°λ νμΌ μμ€ν μλΈλ³Όλ₯¨μ μμΉν΄ μλ€. (μλ₯Ό λ€λ©΄btrfs(5)
.) fanotify_init(2)μ΄ λ°νν fanotify νμΌ λμ€ν¬λ¦½ν°λ₯ΌFAN_REPORT_FID
λ‘ μμ±νμ λλ§ μ΄ μ€λ₯κ° λ°νλ μ μλ€. ENODEV
-
pathname
μ΄ κ°λ¦¬ν€λ νμΌ μμ€ν κ°μ²΄κ°fsid
λ₯Ό μ§μνλ νμΌ μμ€ν μ μ°κ³λΌ μμ§ μλ€. (μλ₯Ό λ€λ©΄ tmpfs(5).) fanotify_init(2)μ΄ λ°νν fanotify νμΌ λμ€ν¬λ¦½ν°λ₯ΌFAN_REPORT_FID
λ‘ μμ±νμ λλ§ μ΄ μ€λ₯κ° λ°νλ μ μλ€. EOPNOTSUPP
-
pathname
μ΄ κ°λ¦¬ν€λ κ°μ²΄κ° νμΌ νΈλ€ μΈμ½λ©μ μ§μνμ§ μλ νμΌ μμ€ν μ μ°κ³λΌ μλ€. fanotify_init(2)μ΄ λ°νν fanotify νμΌ λμ€ν¬λ¦½ν°λ₯ΌFAN_REPORT_FID
λ‘ μμ±νμ λλ§ μ΄ μ€λ₯κ° λ°νλ μ μλ€.
리λ
μ€ μ»€λ λ²μ 2.6.36μμ fanotify_mark()
κ° λμ
λμκ³ λ²μ 2.6.37μμ νμ±νλμλ€.
μ΄ μμ€ν νΈμΆμ 리λ μ€ μ μ©μ΄λ€.
mask
μ FAN_OPEN_EXEC
λ FAN_OPEN_EXEC_PERM
λ₯Ό μ¬μ© μμλ νλ‘κ·Έλ¨ μ§μ μ€νμ΄ μ΄λ€μ§ λλ§ κ·Έ μ΄λ²€νΈλ€μ΄ λ°νλλ€. ꡬ체μ μΌλ‘ λ§ν΄ execve(2)λ execveat(2), uselib(2)λ‘ μ΄λ¦¬λ νμΌμ λν΄ κ·Έ μ΄λ²€νΈλ€μ΄ μμ±λλ€. μΈν°ν리ν°κ° μ€ν¬λ¦½νΈ νμΌμ μ λ¬λ°λ (λλ μ½μ΄ λ€μ΄λ) κ²½μ°μλ κ·Έ μ΄λ²€νΈλ€μ΄ μκΈ°μ§ μλλ€.
κ·Έλ¦¬κ³ λ¦¬λ μ€ λμ λ§μ»€μλ νμκ° λΌ μλ€λ©΄ execve(2)λ execveat(2)μ μ΄μ©ν΄ μ±κ³΅μ μΌλ‘ ELF μ€λΈμ νΈκ° μ΄λ¦΄ λλ μ΄λ²€νΈλ₯Ό λ°μ κ±Έ μμν΄μΌ νλ€.
μλ₯Ό λ€μ΄ λ€μ ELF λ°μ΄λ리λ₯Ό νΈμΆνλ € νκ³ /
μ FAN_OPEN_EXEC
νμλ₯Ό ν΄ λλ€κ³ νμ.
$ /bin/echo foo
μ΄ κ²½μ° μ΄λ²€νΈ μμ μμ©μ κ·Έ ELF λ°μ΄λ리μ μΈν°νλ¦¬ν° κ°κ°μ λν΄ FAN_OPEN_EXEC
μ΄λ²€νΈλ₯Ό λ°κ² λλ€.
/bin/echo
/lib64/ld-linux-x86-64.so.2
리λ μ€ μ»€λ λ²μ 3.16 μ μ λ€μ λ²κ·Έλ€μ΄ μμλ€.
-
flags
μFAN_MARK_FLUSH
κ° μλ κ²½μ° μ°μ§λ μλλ°dirfd
μpathname
μ΄ μ ν¨ν νμΌ μμ€ν κ°μ²΄λ₯Ό λνλ΄μΌ νλ€. -
readdir(2)μ΄
FAN_ACCESS
μ΄λ²€νΈλ₯Ό μμ±νμ§ μλλ€. -
fanotify_mark()
λ₯ΌFAN_MARK_FLUSH
λ‘ νΈμΆνλ κ²½μ°flags
κ°μ΄ μ ν¨νμ§ νμΈνμ§ μλλ€.
2019-08-02