使用Samba/NFS实现文件共享/自动挂载共享目录/autofs自动挂载服务

SMB(server message block):服务器消息块协议。初始目的是为了解决局域网内的文件或打印机等资源共享的问题。支持windows挂载,linux挂载

下载smb:dnf install samba samba-client -y

samba-client

Samba 套件里客户端工具包,用于 Linux 系统访问 Windows 共享 / Linux Samba 服务共享

格式:smbclient -U 用户名 -L //服务端IP

参数

参数功能
-L列出远程主机所有共享资源
-U [user]指定 Samba 共享用户名
-c "cmd"执行单条命令,非交互模式
-N无密码访问(匿名共享)
-p [端口]指定端口(默认 445,旧环境 139)
-A authfile使用账号密码文件,避免明文输密码

smb的主配置文件

/etc/samba/smb.conf

共享每位登录用户和的家目录内容,虽然某些情况下可以方便的共享文件,但是这个操作存在危险,建议删除

用SMB协议共享本地的打印机设备,可以方便局域网内的用户远程使用打印机设备。没有打印机设备,建议删除

共享打印机设备的参数,建议删除

精简版配置文件

security

用户登录Samba服务时采用的验证方式。共4总

share:主机无需验证密码。

user:登录Samba服务时使用账户密码验证

domain:通过与服务器进行身份验证,用来限制用户的来源域

server:使用独立的主机验证来访问的用户提供的密码。

tdbsam

保存Samba服务账户和密码的数据库,用户需使用pdbedit命令独立添加账户密码

pdbedit

管理Samba服务程序的账户信息数据库

格式:pdbedit 【参数】 账户

参数:

-a 账户名:建立Samba账户

-x 账户名:删除Samba账户

-L:列出账户列表

-Lv:列出账户详细信息的列表

配置共享资源/samba

用于设置Samba服务程序的格式以及作用

加在主配置文件中

参数作用
[database]共享名称为 database
comment = Do not arbitrarily modify the database file警告用户不要随意修改数据库
path = /home/database共享目录为 /home/database
public = no关闭 “所有人可见”
writable = yes允许写入操作

1.创建用于访问共享资源的账户信息

用户名是stu,密码是123

2.创建用于共享资源的文件目录

设置正确的安全上下文值为samba_share_t。

在修改后执行restorecon命令即可生效新的安全上下文。

注意修改目录的其他用户权限改为可读可写,所有者权限值设为7

目录的可执行权限是能不能进入目录里

设置安全上下文:

3.设置SELinux策略,使其允许通过Samba服务程序访问目录

必须做,否则不能访问文件夹中得目录

SELinux 布尔名称核心作用
samba_create_home_dirs允许 Samba 服务自动创建用户家目录
samba_domain_controller允许 Samba 充当 Windows 域控制器
samba_enable_home_dirs允许 Samba 访问 /home/ 下系统原生用户家目录
samba_export_all_ro允许 Samba只读导出服务器任意目录
samba_export_all_rw允许 Samba读写导出服务器任意目录
samba_load_libgfapi允许 Samba 加载 GFAPI 库访问 GlusterFS 存储
samba_portmapper允许 Samba 使用端口映射服务
samba_run_unconfined允许 Samba 程序运行无限制域的脚本程序
samba_share_fusefs允许 Samba 共享 FUSE 挂载的文件系统
samba_share_nfs允许 Samba 共享已经被 NFS 挂载的目录
sanlock_use_sambasanlock 存储锁服务访问 Samba
tmpreaper_use_samba临时文件清理工具访问 Samba 共享
use_samba_home_dirs允许其他服务通过 Samba 访问用户家目录
virt_use_samba允许 KVM 虚拟机访问 Samba 共享

4.修改Samba主配置文件

5.重启Samba服务在另一台主机测试

Windows挂载共享

登录成功

创建并写入文件

linux挂载

在发起共享的一端安装支持文件共享服务的软件包cifs-utils

组成部分详细解释
mount挂载命令,用于将远程共享挂载到本地目录
-t cifs-t指定文件系统类型;cifs协议,Linux 访问 Samba/Windows 共享
-o挂载附加选项,后面跟随多个逗号分隔参数
username=stuSamba 共享登录用户名
password=123Samba 共享对应的访问密码
//192.168.143.144/database远程共享地址192.168.143.144:Samba 服务端 IPdatabase:smb.conf 配置中的共享名
/database客户端本地挂载点目录,访问此目录等价访问远端共享

挂载成功

永久自动挂载 linux

安装 Samba服务多的账户名、密码、共享域的顺序将相关信息写到一个认证文件中,然后让/etc/fstab文件夹中让系统自动加在。为了让信息不被其他人看到,最后把这个认证文件的权限修改为仅root可读写。

NFS

网络文件系统(NFS)允许远程主机通过网络挂载文件系统,并像它们挂载在本地那样与这些文件系统进行交互。这可将资源整合到网络的集中服务器中

安装dfs服务的所需软件包

dnf install dnf-utils -y

这里使用master(192.168.143.144)作为客户端

slave(192.168.143.145)作为服务器端

1.在服务端配置防火墙策略

2.服务端建立NFS共享文件

目录的可执行权限是能不能进入目录

3.配置NFS的配置文件

/etc/exports,默认为空

文件参数:

参数含义备注
rw读写权限允许客户端读写共享目录
ro只读权限仅浏览读取,无法新建 / 修改 / 删除
sync同步写入写入数据立刻落盘;数据安全,生产推荐
async异步写入先缓存再写入磁盘;速度快,断电容易丢数据
root_squashroot 压缩(默认开启)以NFS客户端 root 访问时 → 映射为服务端 nobody 匿名用户;安全默认
no_root_squash不压缩 root以NFS客户端 root 访问时,保持 root 身份;危险!慎用
all_squash全部用户压缩无论NFS客户端用什么账户访问,全部映射为 nobody
anonuid=xxx指定匿名 UID搭配 all_squash/root_squash,自定义匿名用户 ID
anongid=xxx指定匿名 GID自定义匿名组 ID
insecure允许高位端口连接客户端使用大于 1024 端口挂载时添加,实验环境常用
secure仅允许 1-1024 端口默认,安全限制
no_subtree_check关闭子树检查共享目录只是文件系统一部分时开启,减少报错
subtree_check开启子树检查(默认)安全校验,性能略低

4.启动NFS服务

由于在使用NFS服务进行文件共享前,需使用RPC(远程过程调用)服务将NFS服务器的ip地址和端口号等信息发送给客户端,因此,在启动NFS服务前,还要先重启rpcbind服务程序。

顺序固定

5.客户端配置

先使用showmount命令查询NFS服务器的远程共享信息。

参数:

-e:显示NFS服务器的共享列表

-a:显示所有已经挂载的NFS的客户端主机名和挂载点

-v:显示版本号

输出的格式:共享的目录名称 允许使用的客户端地址

6.创建挂载目录,挂载

格式:-t,指定挂载的文件系统类型 服务器ip地址:/服务器的共享目录 挂载点

能够实现创建共享

如果希望nfs共享一直有效

写入/etc/fstab中

autofs自动挂载服务

dnf intall autofs

无论是 Samba 服务还是 NFS 服务,都需要将挂载信息写入/etc/fstab文件中,远程共享资源就会自动随服务器开机而挂载。这虽然很方便,但如果挂载的远程资源太多,会给网络带宽和服务器的硬件资源带来很大负担。

如果挂载的资源长期不使用,也会造成服务器硬件资源的浪费。由于网络的问题,NFS服务器与客户端的连接不会一直存在,当我们挂载了NFS服务器之后,任何一方脱机都可能造 成另外一方等待超时。为了解决这样的问题,就出现了下面的想法:

当客户端在有使用NFS文件系统的需求时才让系统自动挂载。

当NFS文件系统使用完毕后,让NFS自动卸载。

autofs这个服务是在客户端的上面,它会持续的检测某个指定的目录,并预先设置当使用到该目录的某个子目录时, 将会取得来自服务器端的NFS文件系统资源,并进行自动挂载的操作。

autofs配置文件

/etc/auto.master

主配置文件

修改格式:挂载父目录 子配置文件

注意:

1. 父目录仅填写一级目录;autofs启动后接管该目录

2. 挂载子目录无需手动预先创建

3. 访问触发:cd/ls访问子路径时,自动创建临时目录并执行挂载

4. 闲置超时(默认5分钟)自动卸载,销毁临时子目录

5. 子配置文件内只写子目录名,不能携带父路径

6. 修改配置后执行 systemctl reload autofs 重载生效 ⚠️ 禁止手动提前创建挂载子目录,会引发挂载故障

对应的子配置文件对这个挂载目录的挂载信息进一步说明。需自己定义,通常后缀名为.misc

创建挂载目录

主配置文件编写内容:

/misc /etc/auto.misc是一个自动挂载的参考文件

去到子配置文件中,填写详细信息

在子配置文件中应按照格式:挂载子目录 挂载文件类型及权限 :设备名

注意此时nfs-auto1目录为空

重启auto服务再次查看

在master编写的文件在slave也能看见