mount(2) System Calls Manual mount(2) mount -- C (libc, -lc) #include int mount(const char *, const char *, const char *__, unsigned long _, const void *_Nullable); mount() , ( , , ), ( ), . (Linux: CAP_SYS_ADMIN). __, , /proc/filesystems (, "btrfs", "ext4", "jfs", "xfs", "vfat", "fuse", "tmpfs", "cgroup", "proc", "mqueue", "nfs", "cifs", "iso9660"). . - . , , . . mount(8), , . NULL ( ), . mount() , , _. , , , _. : o : _ MS_REMOUNT. o -': _ MS_BIND. o : _ MS_SHARED, MS_PRIVATE, MS_SLAVE MS_UNBINDABLE. o : _ MS_MOVE. o : _ . . _ mount(), . , _. , , . MS_DIRSYNC ( Linux 2.5.19) . ( chattr(1).) MS_LAZYTIME ( Linux 4.0) inode (atime, mtime, ctime) '. : o inode , ' ; o fsync(2), syncfs(2) sync(2); o inode '; o 24 , inode . , inode, mtime atime. , , atime mtime , 24 . , , , , MS_STRICTATIME. ( MS_STRICTATIME MS_LAZYTIME , stat(2) (atime), atime .) MS_MANDLOCK ' . (' , fcntl(2).) Linux 4.5, CAP_SYS_ADMIN , CONFIG_MANDATORY_FILE_LOCKING. ' Linux 5.15, . MS_NOATIME ( ) . MS_NODEV ( ) . MS_NODIRATIME . , MS_NOATIME; , MS_NOATIME MS_NODIRATIME. MS_NOEXEC . MS_NOSUID set-user-ID set-group-ID . , SELinux nosuid_transition, nnp_nosuid_transition. MS_RDONLY . MS_REC ( Linux 2.4.11) MS_BIND ' . . , . MS_RELATIME ( Linux 2.6.20) , (atime), atime (mtime) (ctime). , mutt(1), , . Linux 2.6.30, , ( MS_NOATIME), MS_STRICTATIME. , Linux 2.6.30, , 1 . MS_SILENT ( Linux 2.6.17) (printk()) - . MS_VERBOSE ( Linux 2.4.12), . MS_STRICTATIME ( Linux 2.6.30) (atime) . ( Linux 2.6.30.) MS_NOATIME MS_RELATIME. MS_SYNCHRONOUS ( O_SYNC open(2) ). MS_NOSYMFOLLOW ( Linux 5.10) . , , readlink(1), readlink(2), realpath(1) realpath(3) . Linux 2.4, , , , . ( .) : o Linux 2.4, MS_NODEV, MS_NOEXEC MS_NOSUID . o , Linux 2.6.16: MS_NOATIME MS_NODIRATIME. o , Linux 2.6.20: MS_RELATIME. : MS_DIRSYNC, MS_LAZYTIME, MS_MANDLOCK, MS_SILENT MS_SYNCHRONOUS. . . , (. ). , ' . Linux 2.6.16, MS_RDONLY , . , , << >>. , MS_REMOUNT mountflags. _ . , mount(). __ . _ mount(), , . _: MS_LAZYTIME, MS_MANDLOCK, MS_NOATIME, MS_NODEV, MS_NODIRATIME, MS_NOEXEC, MS_NOSUID, MS_RELATIME, MS_RDONLY, MS_STRICTATIME ( MS_NOATIME MS_RELATIME) MS_SYNCHRONOUS. MS_DIRSYNC MS_SILENT . , ' ( ). Linux 3.17, MS_NOATIME, MS_NODIRATIME, MS_RELATIME MS_STRICTATIME _, ( MS_RELATIME). Linux 2.6.26, MS_REMOUNT MS_BIND . , , << >> . _ : MS_REMOUNT | MS_BIND | MS_RDONLY , . ' _ MS_BIND ( Linux 2.4), '. ' . ' chroot(2). __ . ( MS_REC, ) _ . ( ' , .) , , ' . , ', ; , '. MS_REC, ': ( ' ) ' . _ MS_SHARED, MS_PRIVATE, MS_SLAVE MS_UNBINDABLE ( Linux 2.6.15), . , . , , MS_REC ( ) MS_SILENT ( ). , __ . : MS_SHARED . , . , . , , , . MS_PRIVATE . . MS_SLAVE , , , . , , , . . , () , . . , , . MS_UNBINDABLE '. , , '. ' (mount() MS_BIND MS_REC) , ' ( ) . , . MS_REC _, . ( , ), . mount_namespaces(7). _ MS_MOVE ( Linux 2.4.18), : , , . : . _ , , __ . MS_REMOUNT, MS_BIND, MS_MOVE, MS_SHARED, MS_PRIVATE, MS_SLAVE MS_UNBINDABLE _, mount() : . , , . __ , _. , . , -1 errno . , , , . . . Linux, . EACCES . (. path_resolution(7).) EACCES MS_RDONLY. , : ; , , ; ; , ( ). , , EROFS . EACCES source , MS_NODEV. EBUSY , . EBUSY , , . EFAULT - . EINVAL . EINVAL (MS_REMOUNT), . EINVAL (MS_MOVE), ' , , MS_SHARED. EINVAL (MS_MOVE), MS_SHARED. EINVAL (MS_MOVE), <>. EINVAL ' (MS_BIND), ( /proc/pid/ns/mnt ' ), MS_SHARED, ' , - . EINVAL _ MS_SHARED, MS_PRIVATE, MS_SLAVE MS_UNBINDABLE. EINVAL _ MS_SHARED, MS_PRIVATE, MS_SLAVE MS_UNBINDABLE, , MS_REC MS_SILENT. EINVAL ' ' . EINVAL ( , , ) ' (MS_BIND) (MS_REC), , ' . ELOOP . ELOOP , . EMFILE ( , :) . ENAMETOOLONG MAXPATHLEN. ENODEV __. ENOENT , . ENOMEM ' . ENOTBLK ( '). ENOTDIR , . ENXIO . EPERM , , . EPERM (MS_REMOUNT) MS_RDONLY, MS_NOSUID MS_NOEXEC <> (MS_NOATIME, MS_NODIRATIME, MS_RELATIME) , ; . mount_namespaces(7). EROFS MS_RDONLY. . EACCES . Linux. MS_DIRSYNC, MS_MOVE, MS_PRIVATE, MS_REC, MS_RELATIME, MS_SHARED, MS_SLAVE, MS_STRICTATIME MS_UNBINDABLE glibc 2.12. Linux 2.4, , . _ 0xC0ED (MS_MGC_VAL) 16 . ( , <<>>, 16 _.) MS_MGC_VAL 2.4, , Linux 2.4, -- , . MS_SYNC MS_SYNCHRONOUS 1.1.69, MS_SYNC . Linux 2.4 set-user-ID set-group-ID , MS_NOSUID, EPERM. Linux 2.4, set-user-ID set-group-ID . Linux 2.4.19, Linux . -- , . (, , ) , ( ) , . ( Linux 2.4.19 , .) , fork(2), , ; execve(2). , CLONE_NEWNS clone(2). , , clone(2). , unshare(2) CLONE_NEWNS, , , , ( , ), . , mount_namespaces(7). ' . , ' , . . , , . , , , . ' /proc/pid/mountinfo (. ). /proc/pid/mounts /proc/pid/mountinfo Linux /proc/pid/mounts . , /proc/pid/mountinfo , , ' . proc(5) mount_namespaces(7). . mountpoint(1), chroot(2), ioctl_iflags(2), mount_setattr(2), pivot_root(2), umount(2), mount_namespaces(7), path_resolution(7), findmnt(8), lsblk(8), mount(8), umount(8) Maxim V. Dziumanenko Yuri Chornoivan ; , GNU General Public License Version 3 . . , , : . Linux man-pages 6.06 31 2023 mount(2)