使用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_samba | sanlock 存储锁服务访问 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=stu | Samba 共享登录用户名 |
| password=123 | Samba 共享对应的访问密码 |
| //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_squash | root 压缩(默认开启) | 以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也能看见
