admin管理员组

文章数量:1538188

简介

mount操作是用来挂载文件系统,需要在特权级(CAP_SYS_ADMIN)下执行;将source指定的文件系统(通常是指向设备的路径名,但也可以是目录或文件的路径名,或者是虚拟字符串)附加到target中路径名指定的位置(目录或文件)。

umount操作是用来卸载文件系统,同样需要在特权级(CAP_SYS_ADMIN)下执行;

mount函数原型:

#include <sys/mount.h>

int mount(const char *source, const char *target, const char *filesystemtype, unsigned long mountflags, const void *_Nullable data);

int unmount(const char *target);

int unmount2(const char *target ,int flags);

filesystemtype参数:

传入需要挂载的文件系统类型,具体内核支持的类型,可以查看文件/proc/filesystems;例如,"btrfs", "ext4", "jfs", "xfs", "vfat", "fuse", "tmpfs", "cgroup", "proc", "mqueue”,"nfs", "cifs", "iso9660"等待。

当加载适当的模块时,其他类型可能变得可用。

mountflags参数:

可以指定 0到多个如下标志:

MS_BIND:建立绑定挂载,如果指定了该标志,那么 mount()会忽略fstype、 data 参数,以及 mountflags 中除 MS_REC 之外的标志。


MS_DIRSYNC:同步更新路径,该标志的效果类似于 open()的 O_SYNC 标志,但只针对路径。


MS_MANDLOCK:允许对该文件系统中的文件强行锁定记录;


MS_MOVE:将由 source 指定的现有挂载点移到由 target 指定的新位置,令整个动作为一原子操作,不可分割;一旦使用了这一标志,那么 mount()将忽略 fstype、 data 参数 以及 mountflags 中的其他标志。


MS_NOATIME:不更新最后访问时间(使用该标志意在消除额外的磁盘访问,避免每次访问时都更新文件i节点,可提高性能)


MS_NODEV:不允许访问此文件系统上的块设备和字符设备。设计这一特性的目的是为了保障系统安全,规避如下情况:假设用户插入了可移动磁盘,而磁盘中又包含了可随意访问系统的设备 专有文件。


MS_NODIRATIME:不更新目录的最后访问时间。


MS_NOEXEC:不允许在此文件系统上执行程序或脚本,该标志用于文件系统包含非 Linux 可执行文件的场景。


MS_NOSUID:禁用set-user-ID和set-group-ID,这属于安全特性,意在防止用户从 可移动磁盘上运行 set-user-ID 和 set-group-ID 程序。


MS_RDONLY:以只读方式挂载文件系统,在此文件系统上不能创建和修改文件;


MS_REC:该标志与其他标志(比如, MS_BIND)结合使用,以递归方式将挂载动作施之于子树下的所有挂载。


MS_RELATIME :只有当文件最后访问时间戳的当前值(上次更新时间)小于或等于最后一次修改或状态更新的时间戳时,才对其进行更新;


MS_REMOUNT :针对已经挂载的文件系统,改变其mountflag和data使用该标志时, source 和 target 参数应该与最初用于 mount()系统调用的参数相同,而对 fstype 参数则予以忽略。使用该标志可以避免对磁盘进行卸载和重新挂载,在某些场合中,这是不可能做到的。


MS_STRICTATIME:只要访问文件,就总是更新文件的最后访问时间戳;


MS_SYNCHRONOUS:对文件系统上的所有文件和目录保持同步更新;

data参数:

指向信息缓冲区的指针,对其信息的解释则取决于文件系统,不同的文件系统类型,含义解释不同,通常是由逗号分隔的选项组成的字符串。如果没有选项,这个参数可以指定为NULL。

mount命令

格式:mount [-参数] [设备名称] [挂载点] 

m

本文标签: 详解函数命令Linuxmount