Linux入门之磁盘管理(3)文件系统挂载
当磁盘建立了分区,创建了文件系统,只是说明该设备可以用来存储,但是要想访问设备,就需要通过建立一个或多个挂载点,来提供给用户进行访问,在linux中,提供了强大的命令来用于实现文件系统的挂载及管理。
挂载命令的使用
mount 命令
用法:
mount [option] DEVICE mountdir
DEVICE(要挂载的设备):
设备名:如/dev/sdb1 /dev/hda2
卷标名:-L “LABLE” 如 -L mydata
UUID :-U UUID
伪文件系统:proc sysfs tmpfs devpts
mountdir(挂载点):
一般使用一个空目录,如果目录有内容,挂载此目录,内容被隐藏
option:
-t vfstype :指定文件系统用于识别,比如ISO9660表示为镜像文件
-a :安装/etc/fstab中指定的设备及挂载点进行挂载
-n :挂载时不更新/etc/mtab
-r : 只读挂载
-w : 读写挂载
-L LABEL :指定卷标名为挂载设备
-U UUID :指定对应UUID的挂载设备
-B 或者 --bind :将一个目录当作设备进行挂载
-o OPTIONS:额外的挂载选项
async :异步挂载
sync :同步挂载
noatime/atime :不更新/更新挂载中所有文件(包含目录)的访问时间
nodiratime/diratime :不更新目录的访问时间/更新目录访问时间
auto/noauto :是否支持自动挂载,就是是否支持mount -a
exec/noexec :是否支持在此挂载点上运行程序文件
dev/nodev :是否支持在此挂载点上使用设备文件
suid/nosuid :是否支持此挂载点上suid 和 sgid权限位
remount : 重新挂载
ro :只读挂载
rw :读写挂载
acl :启用acl功能
user/nouser :是否支持普通用户挂载此设备,默认为管理员才能使用
Defaults(一般默认挂载选项,这里排除tune2fs中使用 -o选项添加的额外挂载):
rw, suid, dev, exec , suid, nouser, async
卸载命令
umount 命令
umount DEVICE | MOUNT_POINT :指明挂载点目录或者挂载设备都可以卸载
命令使用案例:
查看挂载点列表
使用mount命令
mount #直接输入mount表示查看当前系统所有挂载点
使用findmnt命令
findmnt #默认为查看所有,可以查看指定设备挂载状态 findmnt /dev/sdb1 #查看/dev/sdb1的挂载信息
可以通过查看系统文件映射文件来查看
cat /proc/mounts #查看所有被挂载的文件系统
挂载设备
mount /dev/sdb1 /mnt/sdb1
#直接挂载 [root@mzf ~]# mount /dev/sdb1 /mnt/sdb1
解析:不指定挂载选项,且默认挂载选项没有额外的功能,是没有什么提示的
#查看/dev/sdb1的挂载属性 [root@mzf ~]# mount | grep ‘^/dev/sdb1‘ /dev/sdb1 on /mnt/sdb1 type ext2 (rw)
#查看更详细的信息 [root@mzf ~]# cat /proc/mounts | grep ‘^/dev/sdb1‘ /dev/sdb1 /mnt/sdb1 ext2 rw,seclabel,relatime,errors=continue,acl 0 0
卸载设备
umount /dev/db1 #一般没有消息说明卸载成功,卸载时要停止对其文件使用,否则无法卸载
使用特定选项来挂载
#挂载为只读挂载点 [root@mzf ~]# mount -r /dev/sdb1 /mnt/sdb1 #再次写入数据,显示了错误提示:只读的文件系统 [root@mzf ~]# echo "data" >> /mnt/sdb1/file.log -bash: /mnt/sdb1/file.log: Read-only file system #重新挂载为可读可写 [root@mzf ~]# mount -o remount,rw /dev/sdb1 #查询挂载设备信息,多了rw [root@mzf ~]# findmnt /dev/sdb1 TARGET SOURCE FSTYPE OPTIONS /mnt/sdb1 /dev/sdb1 ext2 rw,relatime,seclabel,errors=continue,acl
注意:重新挂载不要再指明挂载点,因为上次挂载操作后,默认会在/etc/mtab保存列表信息,重新挂载会读取相应信息
挂载目录
#将一个文件夹当设备挂载 [root@mzf ~]# mount --bind /boot /mnt/boot #df查看的只是系统内核支持的文件系统类型,所有无法识别 [root@mzf ~]# df | grep ‘/boot‘ /dev/sda1 194241 34107 149894 19% /boot #使用mount查看所有挂载点并找出/boot相关挂载,发现2个 [root@mzf ~]# mount | grep ‘/boot‘ /dev/sda1 on /boot type ext4 (rw) /boot on /mnt/boot type none (rw,bind)
然后用ls分别查看两个挂载点信息:
解析:发现两个挂载点的文件内容一样,这时因为,/boot本事是一个挂载点,设备为/dev/sda1,
这时再使用挂载点挂载对应的目录,只是提供了两个访问入口
禁止普通用户在指定挂载点运行程序文件
#切换到/dev/sdb1的挂载点 [root@mzf ~]# cd /mnt/sdb1/ [root@mzf sdb1]# pwd /mnt/sdb1 #创建一个脚本文件 [root@mzf sdb1]# echo "echo xxxx" > hello.sh #添加所有用户有执行权限 [root@mzf sdb1]# chmod +x hello.sh #切换到普通用户 [root@mzf sdb1]# su hadoop #因为普通用户为其它人,所有有执行权限可以执行 [hadoop@mzf sdb1]$ ./hello.sh xxxx #退出普通用户 [hadoop@mzf sdb1]$ exit exit #挂载为禁止普通用户运行程序、脚步文件 [root@mzf sdb1]# mount -o remount,noexec /dev/sdb1 #再次切换 [root@mzf sdb1]# su hadoop #即使对文件有执行权限,但是挂载点禁止了普通用户运行程序文件的行为 [hadoop@mzf sdb1]$ ./hello.sh bash: ./hello.sh: Permission denied
本文出自 “神剑特兰克斯” 博客,请务必保留此出处http://mengzhaofu.blog.51cto.com/10085198/1843600
原文地址:http://mengzhaofu.blog.51cto.com/10085198/1843600