纪念:站主于 2020 年 7 月完成了此开源实验,并将过程中的所有命令经过整理和注释以后,形成以下教程
步骤一:规划拓扑
1.1 服务器列表
服务端 192.168.101.41
客户端 192.168.101.42
1.2 服务器列表简介
1) 服务器提供 Samba 服务将自己的目录分享
2) 客户端挂载和使用 Samba 服务将服务端分享的目录挂载在自己的目录上
步骤二:系统环境要求
1) 所有服务器的系统都需要是 CentOS 8 版本
2) 所有服务器都要关闭防火墙
3) 所有服务器都要打开 SELinux
4) 所有服务器系统都要配置好可用的软件源
5) 需要按照拓扑图给对应的服务器配置好 IP 地址和主机名
6) 所有服务器都要可以相互 ping 通自己和对方的 IP 地址和主机名
步骤三:在服务端上安装 Samba 服务
(只在服务端上执行以下步骤)
# yum -y install samba
步骤四:在服务端上配置 Samba 服务
4.1 在服务端上配置 Samba 服务文件
(只在服务端上执行以下步骤)
# vim /etc/samba/smb.conf
将全部内容修改如下:
# See smb.conf.example for a more detailed config file or
# read the smb.conf manpage.
# Run 'testparm' to verify the config is correct after
# you modified it.
[global]
workgroup = WORKGROUP
realm = zhumingyu
netbios name = zhumingyu
#encrypt passwords = yes
map to guest = NEVER
security = user
password server = *
name resolve order = bcast host
restrict anonymous = 2
#null passwords = no
#guest account = smb_nobody
#use spnego = yes
client use spnego = yes
server string = ""
host msdfs = no
msdfs root = no
domain master = no
preferred master = no
local master = no
os level = 0
browse list = no
browseable = no
dns proxy = no
wide links = no
public= no
guest ok = no
hosts deny = ALL EXCEPT 192.168.101.42
[sharetest]
valid users = zhumingyu
write list = zhumingyu
read list = zhumingyu
path = /share
guest ok = no
read only = no
browseable = no
writable = yes
public = no
create mask = 0755
directory mask = 0755
(
补充:
1) 这里的 workgroup = WORKGROUP 是让 Samba 服务属于 WORKGROUP
2) 这里的 hosts deny = ALL EXCEPT 192.168.101.42 是只让客户端 192.168.101.42 能够访问服务端的 Samba
3) 这里的 sharetest 是这个 Samba 挂载点的名称,挂载这个挂载点的格式就是://192.168.101.41/sharetest
4) 这里的 valid users = zhumingyu 是 Samba 服务共享用户需要手动生成,如果换成让所有的服务共享用户都可以使用则可以写成 valid users = @users
5) 这里的 path = /share 是 Samba 服务共享目录需要手动生成
)
4.2 在服务端上生成 Samba 服务共享用户
4.2.1 在服务端上生成 Samba 服务共享用户
(只在服务端上执行以下步骤)
# useradd zhumingyu
(补充:这里以创建用户 zhumingyu 为例)
4.2.2 在服务端上给 Samba 服务共享用户设置系统密码
(只在服务端上执行以下步骤)
# passwd zhumingyu
(补充:这里以给 zhumingyu 设置密码为例)
4.2.3 在服务端上给 Samba 服务共享用户设置 Samba 共享密码
(只在服务端上执行以下步骤)
# smbpasswd -a zhumingyu
(补充:这里以给 zhumingyu 用户设置 Samba 共享密码为例)
4.2.4 显示Samba 服务共享用户是否可用
(只在服务端上执行以下步骤)
# pdbedit -L
4.3 在服务端上生成 Samba 服务共享目录
4.3.1 在服务端上生成 Samba 服务共享目录
(只在服务端上执行以下步骤)
# mkdir /share
(补充:这里以创建目录 /share 为例)
4.3.2 在服务端上给 Samba 服务共享目录设置权限
(只在服务端上执行以下步骤)
# chmod 755 /share
(补充:这里以给 /share 目录设置 755 权限为例)
4.3.3 在服务端上给 Samba 服务共享目录设置所属主和所属组
(只在服务端上执行以下步骤)
如果是 CentOS Linux & RHEL:
# chown zhumingyu:zhumingyu /share
如果是 openSUSE & SLE:
# chown zhumingyu:users /share
(补充:这里以将 /share 目录的所属主设置成 zhumingyu 为例)
4.3.4 在服务端上给 Samba 服务共享目录设置 SELinux 标签
(只在服务端上执行以下步骤)
# semanage fcontext -a -t samba_share_t '/share(/.*)?'
(补充:这里以给 /share 目录打上 samba_share_t SELinux 标签为例)
4.3.5 在服务端上让 Samba 服务共享目录上的 SELinux 标签立刻生效
(只在服务端上执行以下步骤)
# restorecon -RFvv /share/
步骤五:启动 Samba 服务并设置为开机自动启动
(只在服务端上执行以下步骤)
# systemctl enable --now smb
步骤六:客户端使用服务端 Samba 服务
6.1 在客户端上安装 Samba 客户端软件
(只在客户端上执行以下步骤)
# yum -y install samba-client cifs-utils
6.2 在客户端上测试服务端的 Samba 服务
(只在客户端上执行以下步骤)
# smbclient --user=zhumingyu -L //192.168.101.41
或者:
# smbclient //192.168.101.41/sharetest -U zhumingyu
smb: \> ls
smb: \> exit
(补充:这里以通过用户 zhumingyu 测试 IP 地址 192.168.101.41 的 /sharetest Samba 共享目录为例)
6.3 在客户端上挂载服务端的 Samba 目录
6.3.1 手动挂载的方法
(只在客户端上执行以下步骤)
# mount -t cifs -o dir_mode=0755,file_mode=0755,username=zhumingyu,password=1,sec=ntlmssp //192.168.101.41/sharetest /tmp
(补充:这里以通过用户 zhumingyu 密码为 1,目录权限为 0755,文件权限为 0755,挂载 IP 地址 192.168.101.41 的 /sharetest Samba 共享目录到本地的 /tmp 目录为例)
(注意:用户和密码不能一样,否则会报错)
6.3.2 自动挂载的方法
(只在客户端上执行以下步骤)
# vim /etc/fstable
添加以下内容:
......
# //192.168.101.41/sharetest /tmp cifs defaults,rw,dir_mode=0755,file_mode=0755,username=zhumingyu,password=1 0 0
(补充:这里以通过用户 zhumingyu 密码为 1,目录权限为 0755,文件权限为 0755,挂载 IP 地址 192.168.101.41 的 /sharetest Samba 共享目录到本地的 /tmp 目录为例)
(注意:用户和密码不能一样,否则会报错)