Linux文件系统管理 挂载命令mount
概述
mount命令用来挂载Linux系统外的文件。
mount命令
mount命令的基本格式
[root@localhost ~]# mount [-l]
mount命令会查询系统中已经挂载的设备,-l会显示卷标名称
[root@localhost ~]# mount -a
mount会依据配置文件/etc/fstab的内容,自动挂载
[root@localhost ~]# mount [-t 文件系统] [-L 卷标名] [-o 特殊选项] 设备文件名 挂载点
选项:
选项 | 选项说明 |
-t | 文件系统:加入文件系统类型来指定挂载的类型,可以是 ext3、ext4、iso9660 等文件系统 |
-L | 卷标名:挂载指定卷标的分区,而不是安装设备文件名挂载 |
-o |
特殊选项:可以指定挂载的额外选项,比如读写权限、同步/异步等,如果不指定,则默认值生效。 具体的特殊选项参见表 mount 命令挂载特殊选项 |
mount 命令挂载特殊选项
mount 命令挂载特殊选项 | 说 明 |
---|---|
atime/noatime | 更新访问时间/不更新访问时间。在访问分区文件时,是否更新文件的访问时间,默认为更新 |
async/sync | 异步/同步,默认为异步 |
auto/noauto | 自动/手动。如 mount -a 命令执行时,是否会自动安装 /etc/fstab 文件内容挂载,默认为自动 |
defaults | 定义默认值,相当于 rw、suid、dev、exec、auto、nouser、async 这 7 个选项 |
exec/noexec | 执行/不执行。设定是否允许在文件系统中执行可执行文件,默认是允许 |
remount | 重新挂载已经挂载的文件系统,一般用于指定修改特殊权限 |
rw/ro | 读写/只读。文件系统挂载时,是否拥有读写权限,默认是 rw |
suid/nosuid | 具有/不具有 SetUID 权限。设定文件系统是否拥有 SetUID 和 SetGID 权限,默认是拥有 |
user/nouser | 允许/不允许普通用户挂载。设定文件系统是否允许普通用户挂载,默认是不允许,只有 root 可以挂载分区 |
usrquota | 写入代表文件系统支持用户磁盘配额,默认不支持 |
grpquota | 写入代表文件系统支持组磁盘配额,默认不支持 |
1.查看系统中已经挂载的文件系统
[root@localhost ~]# mount sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime,seclabel) proc on /proc type proc (rw,nosuid,nodev,noexec,relatime) devtmpfs on /dev type devtmpfs (rw,nosuid,seclabel,size=918940k,nr_inodes=229735,mode=755) configfs on /sys/kernel/config type configfs (rw,relatime) /dev/sda1 on /boot type ext4 (rw,relatime,seclabel,data=ordered)
2.修改特殊权限
修改权限使用户不能执行所有的可执行文件,我们查看到/boot分区已经被挂载了,而且采用的是defaults选项,那么我们重新挂载分区,并采用noexec权限禁止执行文件执行,看看会出现什么情况(注意不要用/分区做实验,否则系统命令也就不能执行了)
[root@localhost ~]# mount …省略部分输出… /dev/sda1 on /boot type ext4 (rw) …省略部分输出… [root@localhost ~]# mount -o remount, noexec /boot #重新挂载/boot分区,并使用noexec权限 [root@localhost sh]# cd /boot/
写一个shell 并执行
[root@localhost boot]#vi hello.sh #!/bin/bash echo "hello!!" [root@localhost boot]# chmod 755 hello.sh [root@localhost boot]#./hello.sh -bash:./hello.sh:权限不够
虽然赋予了hello.sh执行权限,但是仍然无法执行
3.挂载分区[root@localhost ~]# mkdir /mnt/disk1 #建立挂载点目录
[root@localhost ~]# mount /dev/sdb1 /mnt/disk1 #挂载分区
挂载光盘
在 Windows 中如果想要使用光盘,则只需把光盘放入光驱,单击使用即可。但是在 Linux 中除了要把光盘放入光驱,而且必须在挂载后才能正确使用。还要记得用完光盘后也不能像 Windows —样,直接弹出光驱取出光盘,而必须先卸载才能取出光盘。
挂载命令 :
[root@localhost ~]# mkdir/mnt/cdrom/ #建立挂载点
[root@localhost ~]# mount -t iso9660 /dev/cdrom /mnt/cdrom/ #挂载光盘
光盘的文件系统是 iso9660,不过这个文件系统可以省略不写,系统会自动检测,然后通过mount命令查看已经挂载的设备。
我们已经知道挂载就是把光驱的设备文件和挂载点连接起来。挂载点 /mnt/cdrom 是我们手工建立的空目录,也可以建立 /media/cdrom 作为挂载点,只要是已经建立的空目录都可以作为挂载点。那么 /dev/cdrom 就是光驱的设备文件名,不过注意 /dev/cdrom 只是一个软链接。 命令如下:
[root@localhost ~]#ll /dev/cdrom
lrwxrwxrwx 1 root root 3 1月31 01:13/dev/cdrom ->sr0
/dev/cdrom 的源文件是 /dev/sr0。/dev/sr0 是光驱的真正设备文件名,代表 SCSI 接口或 SATA 接口的光驱,所以刚刚查询挂载时看到的光驱设备文件命令是 /dev/sr0。也就是说,挂载命令也可以写成这样:
[root@localhost ~]# mount /dev/sr0 /mnt/cdrom/
其实光驱的真正设备文件名是保存在 /proc/sys/dev/ cdrom/info 文件中的,所以可以通过查看这个文件来查询光盘的真正设备文件名,命令如下:
[root@localhost ~]# cat /proc/sys/dev/cdrom/info CD-ROM information, ld: cdrom.c 3.20 2003/12/17 drive name: sr0 …省略部分输出…
挂载 U 盘
挂载 U 盘和挂载光盘的方式是一样的,只不过光盘的设备文件名是固定的(/dev/sr0 或 /dev/cdrom),而 U 盘的设备文件名是在插入 U 盘后系统自动分配的。因为U盘使用的是硬盘的设备文件名,而每台服务器上插入的硬盘数量和分区方式都是不一样的,所以 U 盘的设备号需要单独检测与分配,以免和硬盘的设备文件名产生冲突。U 盘的设备文件名是系统自动分配的,我们只要查找出来然后挂载可以了。
首先把 U 盘插入 Linux 系统中(注意:如果是虚拟机,则需要先把鼠标点入虚拟机再插入 U 盘),然后就可以使用 fdisk 命令查看 U 盘的设备文件名了。命令如下:
[root@localhost ~]# fdisk -l Disk /dev/sda: 21.5GB, 21474836480 bytes #系统硬盘 …省略部分输出… Disk/dev/sdb: 8022 MB, 8022654976 bytes #这就是识别的U盘,大小为8GB 94 heads, 14 sectors/track, 11906 cylinders Units = cylinders of 1316 * 512 = 673792 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000 Device Boot Start End Blocks Id System /dev/sdb1 1 11907 7834608 b W95 FAT32 #系统给U盘分配的设备文件名
查看到 U 盘的设备文件名,接下来就要创建挂载点并挂在了。命令如下:
[root@localhost ~]# mkdir /mnt/usb
[root@localhost ~]# mount -t vfat /dev/sdb1 /mnt/usb/
挂载U盘。因为是Windows分区,所以是vfat文件系统格式
卸载文件系统命令:umount
[root@localhost ~]# umount 设备文件名或挂载点 [root@localhost ~]# umount /mnt/usb #卸载U盘 [root@localhost ~]# umount /mnt/cdrom #卸载光盘 [root@localhost ~]# umount /dev/sr0 #命令加设备文件名同样是可以卸载的