CentOS挂载详解
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CentOS挂载详解相关的知识,希望对你有一定的参考价值。
参考技术A接前文, CentOS下ext4、vfat文件系统创建、修改 ,以及 swap分区管理
在Linux中,存储设备的使用一般分三步,分区,创建文件系统(格式化),挂载。
什么是挂载?个人理解,Linux通过倒树形的根文件系统来管理所有的文件,内核只能识别并管理根目录 / 所在的文件系统及其下的目录和文件。因此其他文件系统想要使用,都需要为其指定在现存目录下的访问入口。
将额外的文件系统,与现存的Linux能够识别的目录,建立起映射关系,实现 将现存目录作为访问额外文件系统的入口 的功能,这个过程称为 挂载 ;用于访问额外文件系统的,现存文件系统中的指定目录,称为 挂载点 。
挂载的逆过程,解除额外的文件系统与现存Linux能够识别的目录之间的映射关系,称为 卸载 。
挂载需要两个参数,挂载的设备或文件系统,挂载点;
1. 挂载点,是现有文件系统下的某个目录,是由我们自己指定的;
2. 要挂载的设备或文件系统,其信息要如何获得?
1. 如果要挂载的是磁盘,可以尝试用 fdisk -l 命令配合 df 和 free 命令
为了更直观的比较,可以加上grep以过滤显示结果,例如:
从结果中可以看到,swap分区只有sda3,并且大小和现有swap大小基本一样,可知swap分区已全部挂载。
已挂载磁盘只有sda1和sda2,sdb1没有挂载。
2. 使用 blkid -o format 命令
在format的多个值中比较推荐list或full,full模式下会显示设备名称、UUID和文件系统的类型
而list模式更便于我们阅读,此时会显示设备名称、文件系统类型、表现名称、挂载点(会显示挂载点或未挂载状态)和UUID。如下图,根据提示很容易可以看得出 /dev/sdb1 和 /dev/sr0 处于未挂载状态。
3. 使用 lsblk 命令
例如, lsblk -fmp ,不指定设备则显示所有块设备信息,很容易看到sbd1和sr0没有挂载点,说明他们处于未挂载状态。
通过上面三种方法,我们可以了解到目前尚未挂载的设备信息,即有哪些设备可以挂载。
1,挂载和卸载命令的参数:
挂载使用 mount 命令,设备、挂载点 两者都需要指明
卸载使用 umount 命令,设备、挂载点 两者只需要指明其一
2,一般挂载
命令格式:mount [-nrw] [-t vfstype] [-o options] device dir
device :指明要挂载的设备或文件系统,可以通过以下方式指定
1)设备文件名称:例如/dev/sda5,默认使用这种方式
2)卷标:-L \'LabelName\',例如 -L \'MYDATA\'
3)UUID:-U UUID,即使设备名称或者卷标改了,也不影响识别
4)伪文件系统(暂不介绍):proc,sysfs,devtmpfs,configfs
dir :挂载点
1)事先存在,并建议使用空目录,
2)如果是长期挂载,尽量不要使用mnt和media目录
3)处于busy状态(例如正在被访问的目录)的设备无法被卸载
mount命令本身选项 :
-r:readonly,只读挂载(整个分区只读);
-w:read and write, 读写挂载;
-n:默认情况下,设备挂载或卸载的操作会同步更新至 /etc/mtab 文件中;
-n用于禁止此特性:挂载但不更新 /etc/mtab 文件;
-t vfstype:指明要挂载的设备上的文件系统的类型;多数情况下可省略,此时mount会通过blkid来判断要挂载的设备的文件系统类型;
-L LABEL:挂载时以卷标的方式指明设备;
mount -L LABEL dir
-U UUID:挂载时以UUID的方式指明设备;
mount -U UUID dir
-o options :挂载选项,多用于定义挂载时文件系统的特性
sync/async:同步/异步操作;
atime/noatime:文件或目录在被访问时是否更新其访问时间戳;
diratime/nodiratime:目录在被访问时是否更新其访问时间戳;
remount:重新挂载;
acl:支持使用facl功能;
# mount -o acl device dir
# tune2fs -o acl device
# mount -o remount,acl device dir #重新挂载并增加acl特性
ro:只读,-o ro 等效于 -r
rw:读写,-o rw 等效于 -w
dev/nodev:此设备上是否允许创建设备文件;
exec/noexec:是否允许运行此设备上的程序文件;
auto/noauto:是否支持自动挂载,即是否支持 mount -a ,如果是 noauto ,那么即使在 fstab 中加入记录,启动时也不会自动挂载该设备;
user/nouser:是否允许普通用户挂载此文件系统;
suid/nosuid:是否允许程序文件上的suid和sgid特殊权限生效;
defaults:使用默认挂载特性: rw, suid, dev, exec, auto, nouser, async, relatime(默认特性和CentOS版本及内核版本有关)
特别的,如果指定的特性与defaults的默认特性冲突,以额外指定的特性为准,例如 mount -o defaults,noauto device dir ,默认特性是 auto ,额外指定 noauto ,device实际表现的挂载特性是 noauto 。
3,挂载可移动设备或回环设备
4,设置开机后自动挂载
修改配置文件 /etc/fstab ,该文件中每一行定义一个要挂载的文件系统及相关属性,每一行的内容分为6个字段:
(1) 要挂载的设备,可以是以下内容:
设备文件的名称,如/dev/sda1
设备的LABEL
设备的UUID,CentOS 7中较多使用此种方式
伪文件系统:如sysfs, proc, tmpfs等
(2) 挂载点路径
如果是swap类型的设备,挂载点就是 swap ;
(3) 文件系统类型,如ext4,xfs,btrfs,vfat等等;
(4) 挂载选项,也就是 mount -o 命令的那些选项:
defaults:使用默认挂载选项;
如果要同时指明多个挂载选项,彼此间以逗号分隔,如:defaults,acl,noatime,noexec
(5) 转储频率,已经很少使用:
0:从不备份;
1:每天备份;
2:每隔一天备份;
(6) 自检次序:
0:不自检;
1:首先自检,通常只能是根文件系统可用1;
2:次级自检;
1. 使用 findmnt 命令
findmnt 命令将列出所有已挂载的文件系统或者搜索出某个文件系统,是查看文件系统时很常用的命令之一。findmnt 命令能够在 /etc/fstab 、 /etc/mtab 或 /proc/self/mountinfo 这几个文件中进行搜索。
命令常用选项:
-l:表示采用列表形式输出结果,默认采用树形输出结果
--df 或 -D:以df类型输出结果,显示文件系统及设备空间使用情况
-t TYPE:只输出文件类型为TYPE的结果
参数:
findmnt可以指定设备或挂载点,输出相关结果,不带任何参数则输出所有结果,例如:
findmnt /dev/sda1
findmnt /
2. 使用 blkid 命令
blkid -o list ,在第一部分已经简单介绍过该命令的用法,这里不再重复。
3. 使用 lsblk 命令
lsblk -fp [device] ,第一部分也已经介绍过,这里不再重复。
4. 使用 df 命令
常用 df -hT 来查看 已挂载 设备的文件系统及其空间使用情况, -T 表示查看文件类型, -h 表示以方便识别的方式输出空间情况。
更多用法请看man手册。
5. 使用 mount 命令
直接使用 mount 命令,不带选项和参数,会输出所有已挂载的系统信息,里面可能有很多我们不需要的信息,常和grep一起使用以查看我们关注的内容。
如: mount | grep -E "(sd)|(sr)"
6. 使用 fdisk -l 命令
该命令是分区命令,因此只能看到能够进行分区操作的设备信息(比如光盘就不会显示),同时无论分区有没有挂载都会显示。
上面的命令可以简单分为
可以查看 设备信息: blkid , lsblk , fdisk
只能查看 设备信息: findmnt , df , mount
卸载使用命令 umount ,设备或挂载点任意指定其中之一即可: umount device|dir
卸载时有可能会遇到挂载点正在被其他进程访问,无法卸载的情况:
解决办法有2个:
1. 终止所有正在访问某挂载点的进程,比如使用命令 fuser -km /test (这个命令有可能导致其他进程出问题,生产环境慎用),或者kill掉访问挂载点的进程,然后再卸载。
2. 强制卸载: umount -l /test , umount -l 会等到挂载点空闲后再卸载,相对让人放心一些。
Linux7/Centos7 samba服务配置详解
RHEL7配置samba:开机自动挂载以及多用户挂载
安装samba(centos 7/redhat 7提供的samba版本是samba 4)
开机启动
启动服务
查看监听端口(使用netstat或ss命令查看连接状态)
防火墙放行
然后我们看看配置文件 smb.conf
注意配置任何服务的时候,涉及到权限访问的配置都有一个基本的顺序:
1.配置文件,各种conf文件里面的设置
2.文件权限的访问,用户是否有对应的rwx权限
3.SELinux的上下文和布尔值是否打开了
SMB也不例外。
配置文件一开始就提醒SELinux的配置。
标号1:告诉我们可以执行testparm检测samba配置文件的语法正确性
标号2:samba_enable_home_dirs布尔值允许访问用户的家目录
标号3:samba_share_t需要把这个上下文分配给对应的共享文件
global的配置部分主要设置工作组名、描述信息、netbios名、监听接口或IP、允许域名或网络范围等等
注:hostsallow表示允许的IP或域名,书写格式可以用以下方式表示
-
主机IP:多个IP地址用空格分隔,如:172.25.0.1172.25.0.2
-
网段:可以用掩码长度或子网掩码表示,如:172.25.0.0/24或172.25.0.0/255.255.255.0
-
IP子网前缀:172.25.0.或172.25.表示以172.25.0.或172.25.开始的地址
-
主机名或主机后缀名:如desktop.example.com或.example.com
- IPV6地址:2001:db8:0:1::/64
日志存放点,本地验证的方式使用user(用户名方式验证)
samba 4 下参数security的值不再允许是share和server,建议使用user
samba 4 下如果希望有匿名访问共享,可将 map to guest = Bad User 打开
在[global]节中加入map to guest =Bad User,这个配置的意思是将所有samba系统主机所不能正确识别的用户都映射成guest用户,这样其他主机访问samba共享目录时就不再需要用户名和密码了,在定义共享部分添加guestok = yes。
最后是共享文件
例1:接下我们来创建一个目录(如:/common),通过samba输出共享
通过 SMB 共享/common 目录,samba服务器必须是 STAFF 工作组的一个成员,共享名必须为 common,只有 group3.example.com 域内的客户端可以访问 common 共享(group3.example.com中的系统都在子网172.24.3.0/24中),同样在这个子网中的系统都在,common 必须是可以浏览的,用户 harry 必须能够
读取共享中的内容,如果需要的话,验证的密码是 migwhisk
#yuminstall –y samba samba-client samba-common //该包里有 smbpasswd 命令
#mkdir /common
#chcon -R -t samba_share_t /common
#setsebool -P samba_export_all_rwon
vim/etc/samba/smb.conf
workgroup= STAFF
[common]
path =/common
browseable= yes
#useradd harry
#smbpasswd -a harry ->密码设置为 migwhisk
注:与samba配套使用的smbpasswd在samba-client中,建议安装时一并安装samba-client
#systemctl start smb
#systemctl enable smb
#firewall-cmd--zone=public --permanent–add-rich-rule=’rule family=”ipv4” source address=172.24.3.0/24service name=samba accept’
#firewall-cmd–reload
或者
在smb.conf配置文件的共享定义中使用hosts allow = 172.24.3.只允许group3.example.com 域内的客户端访问。
在客户端上测试访问samba共享
Windows客户端
输入”//samba服务器的IP”回车
输入用户名和密码,回车
从linux客户端测试访问
注:挂载smb共享使用的是cifs文件系统
或使用mount.cifs挂载
注:mount.cifs命令由cifs-utils软件提供
注:sec选项的作用是选择安全模型
注:linux作为客户端挂载windows的共享(共享目录是ntfs文件系统)也需要安装cifs-utils包
可以用man mount.cifs查看手删页
例2:配置多用户SMB挂载
在system1共享通过SMB目录/devops满足以下要求:
共享名为devops
共享目录devops只能被group3.example.com域中的客户端使用
共享目录devops必须可以被浏览
用户kenji必须能以读的方式访问此共享,该问密码是atenorth
用户chihiro必须能以读写的方式访问此共享,访问密码是atenorth
此共享永久挂载在system2.group3.example.com上的/mnt/dev目录,并使用用户kenji作为认证。任何用户可以通过用户chihiro来临时获取写的权限。
在 system1 (smb共享服务器)上创建目录
#mkdir /devops
创建相关用户
#useradd kenji
#useradd chihiro
设置/devops目录的acl权限
#setfacl -m u:chihiro:rwx /devops
设置selinux
#chcon -R -t samba_share_t /devops
#setsebool -P samba_export_all_rwon
修改配置文件
vim/etc/samba/smb.conf
[devops]
path =/devops
browseable= yes
writelist = chihiro
添加samba用户
#smbpasswd -a kenji
#smbpasswd -a chihiro
重启服务
#systemctl restart smb nmb
system2(smb客户端)上的配置如下:
创建用于测试相关用户
#useradd lisi
#useradd zhangsan
创建挂载点:
#mkdir /mnt/dev
创建密码文件
vim/root/multiuser.txt
username=kenji
password=atenorth
在 fstab 中写入:
//system1.group3.example.com/devops /mnt/dev cifs
defaults,credentials=/root/multiuser.txt,multiuser,sec=ntlmssp0 0
注:在客户端挂载smb共享若使用credentials(指定验证凭证)参数则要安装cifs-utils软件包。
或在 fstab 中写入:
//system1.group3.example.com/devops /mnt/dev cifs
defaults,username=kenji,password=atenorth,multiuser,sec=ntlmssp0 0
#mount –a
执行df –hT验证挂载
#su – lisi
从上图可以看到客户端用户lisi没有任何权限,lisi若要以只读方式访问共享目录则执行下面的命令同步服务器kenji用户身份
#cifscredsadd system1 -u kenji
如下图所示:
从上图可以看到客户端用户lisi可以进行读操作但仍然不能执行写操作。
客户端zhangsan用户可以对共享目录执行写操作又如何实现呢?
方法是执行下面的命令同步服务器chihiro用户身份
#su – zhangsan
#cifscredsadd system1 –u chihiro
注:cifscreds是管理认证凭据(用户名和密码),用于多用户建立会话目的的工具
例3:需求描述
共享名路径权限
sharedoc/smb/docs所有人员包括来宾均可以访问
rddocs /smb/tech 仅允许特定组的用户进行读写访问
特定组的组名为rd,目前的Alice、Jack、Tom三个人
配置samba服务器
创建共享目录(假设共享/smb目录下的文件)
#mkdir -p /smb/docs
#mkdir -p /smb/tech
编辑smb.conf文件
在全局部分添加map to guest项
在共享定义部分添加如下共享配置项
创建系统用户和组账户
将用户添加到rd组
创建samba用户
修改目录权限
重启smb服务
在客户端上测试访问smb共享
以windows系统为例,在客户端上输入:samba服务器ip
直接打开共享窗口,当访问rrdocs共享目录时,需要输入用户名和密码
如果对此有兴趣,请扫下面二维码免费获取更多详情
以上是关于CentOS挂载详解的主要内容,如果未能解决你的问题,请参考以下文章