1、什么是Samba
Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,工作模式为C/S,服务器和客户端独立安装。通常用于windos和linux之间的文件传输。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置“NetBIOS over TCP/IP”使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。
2、Samba的基本信息
安装包:samba;samba-common;samba-client;
启动脚本:smb.service
主配置目录:/etc/samba/smb.conf
安全上下文:samba_share_t
端口:139;445
支持的协议:TCP/UDP
3、如何安装Samba
安装:dnf install samba samba-common samba-client -y
启用:systemctl enable --now smb ;添加火墙:firewall-cmd --permanent --add-service=samba
测试:smbclient -L //192.168.1.100
![](https://i-blog.csdnimg.cn/blog_migrate/8c2655977b97f23ae35a9dd4888b0e8c.png)
4、如何管理Samba中的用户
添加用户:smbpasswd -a username
显示用户列表:pdbedit -L
删除用户:pdbedit -x username
![](https://i-blog.csdnimg.cn/blog_migrate/1f6ee2a161492219f73e13e5925351ae.png)
【注】Samba中的用户必须从本地用户添加
5、如何访问Samba用户的家目录
当用户建立的同时,家目录也会同时建立,如果需要访问家目录,则需要设置sebool的值,使用户可以访问。
![](https://i-blog.csdnimg.cn/blog_migrate/fb89d8299fc0c1058477a9b4f1d63402.png)
![](https://i-blog.csdnimg.cn/blog_migrate/d3df7fc5e4a074eb24249d693856ff8f.png)
6、如何设置Samba中的共享文件
<1> 建立共享目录,并设置其安全上下文为samba_share_t
![](https://i-blog.csdnimg.cn/blog_migrate/6cd836eee7bcc881969b0d00562e3e28.png)
<2> 配置主配置文件,设置共享目录可被访问
![](https://i-blog.csdnimg.cn/blog_migrate/81f3ee14b2ef03b137676e64594d4a13.png)
<3> 客户端测试结果
![](https://i-blog.csdnimg.cn/blog_migrate/a533bf80f217f7549408d6f4c0cd63f6.png)
7、Samba用户的访问控制
允许白名单:hosts allow 192.168.1.200 192.168.1.
![](https://i-blog.csdnimg.cn/blog_migrate/ad160d9aca7c334c8bafbc156dac3e3d.png)
拒绝黑名单:hosts allow 192.168.1.200 192.168.1.
![](https://i-blog.csdnimg.cn/blog_migrate/d186575d1707732ab5e9340f913e198f.png)
在192.168.1.200主机中:
![](https://i-blog.csdnimg.cn/blog_migrate/fca98adf337e431f4f1c89dc4399f4b7.png)
【注】黑名单和白名单均可出现在全局的设定中
8、常用的Samba配置参数
对Samba的配置均在配置文件中完,常用参数如下:
配置参数内容 | 含义 |
writable = yes | 可写 |
write list = username | 指定用户可写 |
wirte list = +username (@username) | 指定用户组可写 |
valid users = username | 指定用户可以访问 |
valid users = +username (@username ) | 指定用户组可以访问 |
browseable = yes(no) | 是否隐藏共享 |
全局设定:map to guest = bab user 目录下设定:guest ok = yes | 全局设定:将所有匿名用户定义为guest 对应目录下:允许gues访问(默认不可访问) |
admin users = lee | 指定共享的用户身份为超级用户,但只能指定用户,不可指定组 |
![](https://i-blog.csdnimg.cn/blog_migrate/7dd4401b300f3f7aa1e9d3cc901d9887.png)
![](https://i-blog.csdnimg.cn/blog_migrate/1ad3e538034006598fe35844f54c55f6.png)
![](https://i-blog.csdnimg.cn/blog_migrate/214068656c724b73d1cdbdcdd6b90e8b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/27a03fd05853a65bf74f8746f3b5bdfe.png)
【注】因为在登录后,所使用的参数较少,所以一般情况下,对共享的操作均是将共享目录挂载到当前主机,直接在shell中操作。
挂载参数:mount //192.168.1.100/testdir -o username=lee,password=lee /mnt
参考文献:百度百科