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或域名,书写格式可以用以下方式表示

  1. 主机IP:多个IP地址用空格分隔,如:172.25.0.1172.25.0.2

  2. 网段:可以用掩码长度或子网掩码表示,如:172.25.0.0/24或172.25.0.0/255.255.255.0

  3. IP子网前缀:172.25.0.或172.25.表示以172.25.0.或172.25.开始的地址

  4. 主机名或主机后缀名:如desktop.example.com或.example.com

  5. 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挂载详解的主要内容,如果未能解决你的问题,请参考以下文章

centos7开机自动挂载硬盘

centos新服务器的分区挂载

centos单目录挂载多块硬盘

centos7挂载的ntfs硬盘为只读,并且修改挂载硬盘权限报错

centos 挂载磁盘

CentOS镜像挂载操作