Samba服务器实战

Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置“NetBIOS over TCP/IP”使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。

主机拓扑

主机名 os ip 内存 硬盘
qianyios Openeuler22.03LTS 192.168.48.101 2G 100G

安装Samba

1
2
3
4
5
6
dnf  install -y samba
#关闭防火墙
systemctl disable firewalld &> /dev/null
systemctl stop firewalld
sed -i "s#SELINUX=enforcing#SELINUX=disabled#g" /etc/selinux/config
setenforce 0

Samba共享服务的匿名访问

配置文件

samba服务器最主要的配置文件其实只有一个,就是/etc/samba/samb.conf,这个配置文件可以分为两个部分,一个部分是全局参数,一部分是共享资源相关参数。

1
vim /etc/samba/smb.conf

先取消[homes]、[printers]的项目,添加[share]项目如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
[global]
#与主机名相关的设置
#工作组名称
workgroup = SAMBA
security = user
passdb backend = tdbsam
printing = cups
printcap name = cups
load printers = yes
cups options = raw
##添加此项,开启匿名用户访问
map to guest = Bad User
include = /etc/samba/usershares.conf
[share]
#设置共享路径
path = /abc
##公共访问
public=yes
##能够访问
browseable=yes
##写权限
writable=yes
##设置权限
create mask=0644
directory mask=0755

创建共享路径,并给权限

1
2
3
4
5
mkdir /abc
chmod 777 /abc
systemctl enable --now smb.service
#linux创建测试文件,客户端查看
echo "text" >> /abc/test.txt

文件夹地址栏输入\192.168.48.101\share,他会提示你输入用户和密码,用户名是nobody,密码不用输,然后就客户端就可以看见linux创建的测试文件

image-20241127103444665

客户端创建文件夹,linux查看

image-20241127103714433

image-20241127103729198

Samba共享服务的用户身份验证

配置文件

1
vim /etc/samba/smb.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
[global]
#与主机名相关的设置
#工作组名称
workgroup = SAMBA
security = user
passdb backend = tdbsam
printing = cups
printcap name = cups
load printers = yes
cups options = raw
##添加此项,开启匿名用户访问
## map to guest = Bad User #(删除匿名访问)
include = /etc/samba/usershares.conf
[share]
#设置共享路径
path = /abc
##公共访问
# public=yes #(删除公共访问)
##能够访问
browseable=yes
##写权限
#writable=yes #(删除写入权限)
##设置权限
create mask=0644
directory mask=0755
##允许访问的用户
valid users=qianyios, qianyios1
##允许写入的用户
write list=qianyios

创建smb用户

1
2
3
4
5
6
7
8
9
useradd qianyios
useradd qianyios1
smbpasswd -a qianyios
#有以下提示
New SMB password: ##设置密码
Retype new SMB password: ##确认密码
Added user qianyios.
#qianyios1也是这样的操作
smbpasswd -a qianyios1

image-20241127104829402

列出smb用户列表

1
pdbedit -L

image-20241127104533486

1
2
#重启
systemctl restart smb.service

用linux的smb客户端进行测试

1
dnf install -y samba-client

image-20241127110308605

image-20241127110418511

刚好根据前面的配置文件

1
2
3
4
##允许访问的用户
valid users=qianyios, qianyios1
##允许写入的用户
write list=qianyios

qianyios可创建文件qianyios1不可以创建,但是可以读取文件

windows客户的测试

由于之前做匿名测试连接

要在cmd清理网络驱动器缓存

1
net use * /del

image-20241127110815836

image-20241127110903495

在qianyios用户下可以创建文件夹

image-20241127110927236

用qianyios1试一下

image-20241127111029950

可查看文件但不能创建文件

image-20241127111102850

Samba共享服务的账户名映射(账户别名登录)

配置映射文件和Samba配置文件

1
2
3
4
cat > /etc/samba/smbusers <<"EOF"
qianyios = qyos
qianyios1 = qyos1
EOF
1
2
3
4
vim /etc/samba/smb.conf

#添加以下内容在对应位置
username map = /etc/samba/smbusers

image-20241127143636914

重启服务

1
systemctl restart smb.service

windows客户端测试

cmd清理缓存

1
net use * /del

image-20241127144418512

qyos可以登入

image-20241127144427418

qyos1也可以登入

image-20241127144805385

Samba共享服务的访问控制列表

禁止某个网段访问

hosts deny=192.168.48. ##添加拒绝192.168.48段访问share

或者如果你想允许除了192.168.48.0/24之外的所有主机访问:

hosts allow = ALL EXCEPT 192.168.48.

1
vim /etc/samba/smb.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[share]
#设置共享路径
path = /abc
##公共访问
# public=yes #(删除公共访问)
##能够访问
browseable=yes
##写权限
#writable=yes #(删除写入权限)
##设置权限
create mask=0644
directory mask=0755
##允许访问的用户
valid users=qianyios,qianyios1
##允许写入的用户
write list=qianyios
##添加拒绝192.168.48段访问share
hosts deny=192.168.48.
1
2
##重启Samba服务
systemctl restart smb.service

windows就不测试了用linux的smb客户端来测试一下

1
smbclient //192.168.48.101/share -U qyos

image-20241127164357033

我们本机是192.168.48.101的,因为禁用了192.168.48.0/24的网段访问,所以都访问不了

将samba挂载到linux使用

记得取消的禁止访问哦

1
2
3
4
5
6
7
8
#创建挂载点
mkdir -p /opt/share
#安装附属
yum install cifs-utils -y
#将共享文件夹挂载到挂载点
mount.cifs //192.168.48.101/share /opt/share -o username=qianyios
df -h
ls /opt/share

image-20241127165315328

已挂载成功

特别声明
千屹博客旗下的所有文章,是通过本人课堂学习和课外自学所精心整理的知识巨著
难免会有出错的地方
如果细心的你发现了小失误,可以在下方评论区告诉我,或者私信我!
非常感谢大家的热烈支持!