『无欲则无求』Linux常用命令 — 36、挂载命令

    技术2022-07-10  138

    文章目录

    1、mount命令基本格式2、练习:3、`mount -a`命令4、mount命令格式5、-o特殊选项说明6、练习:说明`exec/noexec`选项

    挂载就是把设备文件名和已经建立的空目录链接起来的过程,就叫做挂载。

    1、mount命令基本格式

    linux所有存储设备都必须挂载才能使用,包括硬盘。

    命令名称:mount命令所在路径:/bin/mount执行权限:所有用户

    命令的具体格式如下:

    #查询系统中已经挂我的设备,-l会显示卷标名称 [root@localhost ~ ] # mount [-l]

    2、练习:

    直接输入mount命令,就是查询系统中已经存在的挂载设备。

    [root@localhost ~]# mount /dev/sda3 on / type ext4 (rw) proc on /proc type proc (rw) sysfs on /sys type sysfs (rw) devpts on /dev/pts type devpts (rw,gid=5,mode=620) tmpfs on /dev/shm type tmpfs (rw,rootcontext="system_u:object_r:tmpfs_t:s0") /dev/sda1 on /boot type ext4 (rw) none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw) 其中只有 /dev/sda3 on / type ext4 (rw)-->/dev/sda3挂载到根目录下,文件系统是ext4,权限是读写。 /dev/sda1 on /boot type ext4 (rw) 有用,其他都是干扰项. 还要注意,swap分区是不需要挂载点的,是给系统内核直接访问的分区,mount命令是查看不到的。

    3、mount -a命令

    #依据配置文件/etc/fstab的内容,自动挂载 [root@localhost ~ ] # mount -a

    -a的a是auto,自动的意思。

    Linux系统的硬盘是开机自动挂载的。但是光盘和U盘这类移动存储设备,是不推荐开机自动挂载的。

    如果光盘和U盘这类移动存储设备设置了开机自动挂载,开机时一旦你忘记放光盘或者U盘,系统就会无条件的寻找这个分区,如果找不到的话,就会系统启动错误。这样的错误其实修复起来并不难,但是一定要在本机上进行操作。

    Linux系统自动挂载就是依照/etc/fstab文件进行自动挂载的。这个文件是一个非常脆软的文件,一旦这个文件写错,系统会启动报错。

    [root@localhost ~]# vim /etc/fstab 而mount -a命令可以看作是扫描一下/etc/fstab文件,看看里边的内容有没有写错,如果写错会报错。

    在Red Hat 6以后的Linux系统中,/etc/fstab文件的容错性明显的增强了。Red Hat 5以前出现一个字母的拼写错误都是不行的,Red Hat 6以后除了关键位置的信息不能有错误,其他的出现错误也不会报错,所以有时候用mount -a命令扫描,不一定会出现错误,,所以不能盲目信任mount -a命令的结果。这个记住就好。(后边会说如果该文件有错误怎么修复)

    4、mount命令格式

    [root@localhost ~ ] # mount [-t 文件系统] [-L卷标名] [-o特殊选项] \ 设备文件名 挂载点 注意:在Linux系统中\ 的意思表示换行符, 代表上边两行是一行内容。 选项: -t文件系统:加入文件系统类型来指定挂载的类型,可以ext3、ext4、iso9660等文件系统。(不写也没事,Linux系统默认光盘U盘都能自动识别)。 -L卷标名:挂载指定卷标的分区,而不是安装设备文件名挂载。(现在基本上用不到了,可以不关注。) -o特殊选项:可以指定挂载的额外选项,比如读写权限、同步异步等,如果不指定则默认值生效。

    举例

    [root@localhost ~ ] # mount -t iso9660 /dev/sr0 /mnt/cdrom/

    5、-o特殊选项说明

    我们先查看一下前面说的/etc/fstab文件,Linux系统的自动挂载配置文件。 上图中红框内就是分区挂载的默认权限。下面详细说明一下挂载的权限。

    atime/noatime:更新访问时间/不更新访问时间。访问分区文件时,是否更新文件的访问时间,默认为更新。async/sync:异步/同步,默认为异步。auto/noauto :自动/手动,mount-a命令执行时,是否会自动安装/etc/fstab文件内容挂载,默认为自动。exec/noexec:执行/不执行,设定是否允许在文件系统中执行可执行文件,默认是exec允许。rw/ro:读写/只读,文件系统挂载时,是否具有读写权限,默认是rw。suid/nosuid:具有/不具有SUID权限,设定文件系统是否具有SUID和SGID的权限,默认是具有。user/nouser:允许/不允许普通用户挂载,设定文件系统是否允许普通用户挂载,默认是不允许,只有root可以挂载分区。defaults:定义默认值,相当于rw,suid,dev,exec,auto,nouser,async 这七个选项。remount:重新挂载已经挂载的文件系统,一般用于指定修改特殊权限。usrquota:写入代表文件系统支持用户磁盘配额,默认不支持。grpquota:写入代表文件系统支持组磁盘配额,默认不支持。

    说明: defaults权限代表最上边7种权限中,有一个是默认值。这个默认值一般不需要进行修改,默认选项就很好。

    比如exec/noexec选项,如果选择noexec,那整个分区中的文件都不能执行,如果是根目录定义成noexec,那整个系统都无法启动,即使想修改也不行,因为mount命令都执行不了了。

    6、练习:说明exec/noexec选项

    #1、查看系统中已经挂载的文件系统,注意有虚拟文件系统 #命令结果是代表:/dev/sda3分区挂载到/目录,文件系统是ext4,权限是读写 [root@localhost] # mount /dev/sda3 on/type ext4(rw)proc on/proc type proc(rw) sysfs on/sys type sysfs(rw) devpts on/dev/pts type devpts(rw,gid=5,mode=620) tmpfs on/dev/shm type tmpfs(rw) /dev/sdal on/boot type ext4(rw) none on/proc/sys/fs/binfmt_misc type binfmt_misc(rw) sunrpe on/var/lib/nfs/rpe_pipefs type rpc_pipefs(rw) #2、修改特殊权限 #我们查看到/boot分区已经被挂载,而且采用的defaults 选项,那么我们重新挂载分区,并采用 noexec [root@localhost ~ ] # mount -o remount,noexec /boot(临时生效) 然后用mount命令查询一下分区,boot分区多了noexec权限 /dev/sdal on /boot type ext4 (rw,noexec) #权限禁止执行文件执行,看看会出现什么情况(注意不要用根分区做试验,#不然系统命令也不能执行了)。 # 执行一个shell脚本 [root@localhost boot]#./hello.sh -bash:./hello.sh:权限不够 # 再修改回来权限,就可以执行了。 [root@localhost ~ ] # mount -o remount,exec /boot

    这个练习也要记住remount的作用和使用方法。

    Processed: 0.013, SQL: 9