Samba服务
1.概述:
-
Samba服务程序现在已经成为在Linux系统与Windows系统之间共享文件的最佳选择
-
Samba是一组软件包,使Linxu支持SMB/CIFS协议
-
Samba可以在几乎所有的类UNIX平台上运行
-
Samba最初于1991年由澳大利亚Andrew Tridgell研发
-
Samba基于GPL发行,如今由Samba小组维护
-
Samba更新速度很快
2.SMB/CIFS协议:
(1)SMB协议:
-
SMB(服务信息模块)协议是一个高层协议、它提供了在网络上的不同计算机之间共享文件,打印机和不同通信资料的手段
-
SMB使用NetBIOS API实现面向连接的协议,该协议为Window是客户程序和服务提供了一个通过虚链路按照请求——响应方式进行通信的机制
-
SMB的工作原理就是让NetBIOS与SMB协议运行在TCP/IP上,并且使用NetBIOS的名字解释器让Linux机器可以在Windows的网络邻居中被看到,从而和Windows的网络邻居中被看到,从而和Windows9x/NT/200X进行相互沟通,共享文件和打印机
(2)CIFS协议:
-
通用网际文件系统是微软服务器消息块协议(SMB)的增强版
-
提供计算机用户在企业内部网和因特网上共享文件的标准方法
-
CIFS在TCP/IP运行,利用英特网上的全球域名服务系统(DNS)增强其可扩展性,同时为因特网上普遍存在的慢速拨号连接优化
(3)CIFS特点:
-
文件访问的完整性为慢速连接优化
-
为文件或目录的访问提供安全性
-
使用同一编码(Unicode)文件名
-
使用全局文件名
3.Samba服务相关:
(1)Samba相关配置文件:
-
/etc/samba/smb.conf:主配置文件
-
/etc/samba/smbusers:用于映射Linux用户和Window用户
-
/etc/samba/lmhosts:用作与设置NetBIOS名字与IP地址的对应关系
-
/etc/sysconfig/samba:用于设置守护进程的启动参数
-
/etc/pam.d/samba:用于Samba服务的PAM相关配置
(2)Samba的守护进程:
-
/usr/sbin/smbd:实现共享和验证授权服务
-
/usr/sbin/nmbd:实现名字解析和浏览服务
(3)监听端口:
-
NetBIOS:UDP 137、138和TCP 139
-
SMB:TCP 445
(4)RPM包:
-
samba-common:包括Samba服务器和客户均需要的文件
-
samba-server:Samba服务端软件
-
samba-client:Samba客户端软件
-
samba-winbind:可选的winbind服务
-
samba-swat:Samba的Web配置工具
-
cifs-utils:Samba客户端支持文件共享服务的软件包
(5)服务端工具:
-
/usr/bin/smbpasswd:用于设置Samba用户账号及口令
-
/usr/bin/testparm:用于检测配置文件的正确性
-
/usr/bin/smbstatus:用于查找网络中的Samba服务器
(6)客户端工具:
-
/usr/bin/findsmb:用于查找网络中的Samba服务器
-
/usr/bin/smbclient:Linux下的Samba客户端
-
/usr/bin/smbget:基于SMB/CIFS的类似于wget的下载工具
-
/usr/bin/smbtar:类似于tar的归档工具,用于将SMB/CIFS的共享打包备份到Linux主机
4.Samba服务实验部署:
(1)安装samba服务:
[root@localhost ~]# yum install -y samba
……安装过程省略……
(2)查看/etc/samba/smb.conf主配置文件:
1)4种安全验证方式:
-
share:来访主机无需验证口令;比较方便,但安全性很差
-
user:需验证来访主机提供的口令后才可以访问;提升了安全性 #默认安全等级
-
server:使用独立的远程主机验证来访主机提供的口令(集中管理账户)
-
domain:使用域控制器进行身份验证
2)3种用户后台类型:
-
smbpasswd:使用smbpasswd命令为系统用户设置Samba服务程序的密码
-
tdbsam:创建数据库文件并使用pdbedit命令建立Samba服务程序的用户
-
ldapsam:基于LDAP服务进行账户验证
[root@localhost ~]# cat /etc/samba/smb.conf | grep -Ev "^$|^#"
[global] #全局参数
workgroup = SAMBA #工作组名称
security = user #安全验证的方式
passdb backend = tdbsam #定义用户后台的类型
printing = cups
printcap name = cups
load printers = yes #设置在Samba服务启动时是否共享打印机设备
cups options = raw #打印机的选项
[homes] #共享参数
comment = Home Directories #描述信息
valid users = %S, %D%w%S
browseable = No #指定共享信息是否在“网上邻居”中可见
read only = No
inherit acls = Yes
[printers] #打印机共享参数
comment = All Printers #描述信息
path = /var/tmp #共享文件的实际路径
printable = Yes
create mask = 0600
browseable = No #指定目录是否在“网络邻居”中可见
[print$] #扩展参数
comment = Printer Drivers
path = /var/lib/samba/drivers
write list = @printadmin root
force group = @printadmin
create mask = 0664
directory mask = 0775
(3)创建用于访问共享资源的账户信息:
pdbedit命令:
将普通用户转换为Samba用户
格式:
pdbedit [参数] username
常用参数:
-
-a:建立Samba用户
-
-x 用户名:删除Samba用户
-
-L:列出用户列表
-
-Lv:列出用户详细信息的列表
-
-u:指定用户
[root@localhost ~]# useradd yemao
[root@localhost ~]# pdbedit -a -u yemao #将普通用户转换为Samba用户
new password: #此处输入该账户在Samba服务数据库中的密码
retype new password: #再次输入密码进行确认
Unix username: yemao
NT username:
Account Flags: [U ]
User SID: S-1-5-21-2232580088-3431904521-500000222-1000
Primary Group SID: S-1-5-21-2232580088-3431904521-500000222-513
Full Name:
Home Directory: \\localhost\yemao
HomeDir Drive:
Logon Script:
Profile Path: \\localhost\yemao\profile
Domain: LOCALHOST
Account desc:
Workstations:
Munged dial:
Logon time: 0
Logoff time: 三, 06 2月 2036 23:06:39 CST
Kickoff time: 三, 06 2月 2036 23:06:39 CST
Password last set: 三, 29 4月 2020 21:58:43 CST
Password can change: 三, 29 4月 2020 21:58:43 CST
Password must change: never
Last bad password : 0
Bad password count : 0
Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
(4)创建用于共享资源的文件目录:
[root@localhost ~]# mkdir /home/database
[root@localhost ~]# chown -Rf yemao:yemao /home/database
(5)修改主配置文件:
[root@localhost ~]# vim /etc/samba/smb.conf
#在文件最后添加如下代码:
[database] #共享名称为database
comment = This is a test #共享文件内容
path =/home/database #共享目录为/home/database
public = no #关闭“所有人可见”
writable = yes #允许写入操作
[root@localhost ~]# testparm --show-all-paraments #检测文件是否有错
Load smb config files from /etc/samba/smb.conf
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions
(6)重启smb服务,并加入开机自启:
[root@localhost ~]# systemctl restart smb
[root@localhost ~]# systemctl enable smb
Created symlink from /etc/systemd/system/multi-user.target.wants/smb.service to /usr/lib/systemd/system/smb.service.
[root@localhost ~]# netstat -lunt | egrep '137|138|139|445' #检测端口状态
tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:445 0.0.0.0:* LISTEN
tcp6 0 0 :::139 :::* LISTEN
tcp6 0 0 :::445 :::* LISTEN
(7)Windows挂载共享测试:
① 在地址栏输入“\\192.168.32.143”
![](https://img-blog.csdnimg.cn/2020043014044736.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JJR0JPU1M5NzEyMjQ=,size_16,color_FFFFFF,t_70)
② 验证身份信息
![](https://img-blog.csdnimg.cn/2020043014044748.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JJR0JPU1M5NzEyMjQ=,size_16,color_FFFFFF,t_70)
③ 查看共享文件夹
![](https://img-blog.csdnimg.cn/2020043014044745.png)
④ 查看共享文件夹下的文件
![](https://img-blog.csdnimg.cn/20200430140447101.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JJR0JPU1M5NzEyMjQ=,size_16,color_FFFFFF,t_70)
(8)Linux挂载共享测试:
smbclient:
Linux下的Samba客户端
用法:smbclient //NetBIOS名或IP地址/共享名 -U 用户名
1.安装Samba客户端:
[root@localhost ~]# yum install -y samba-client
……安装过程省略……
2.检查Samba资源:
[root@localhost ~]# smbclient -L //192.168.32.143/database -U yemao
Enter SAMBA\yemao's password:
Sharename Type Comment
--------- ---- -------
print$ Disk Printer Drivers
database Disk This is a test
IPC$ IPC IPC Service (Samba 4.10.4)
yemao Disk Home Directories
Reconnecting with SMB1 for workgroup listing.
Server Comment
--------- -------
Workgroup Master
--------- -------
3.列出Samba的资源使用情况:
[root@localhost ~]# smbstatus
Samba version 4.10.4
PID Username Group Machine Protocol Version Encryption Signing
----------------------------------------------------------------------------------------------------------------------------------------
13808 yemao yemao 192.168.32.1 (ipv4:192.168.32.1:54193) SMB3_11 - partial(AES-128-CMAC)
Service pid Machine Connected at Encryption Signing
---------------------------------------------------------------------------------------------
IPC$ 13808 192.168.32.1 三 4月 29 22时35分22秒 2020 CST - -
No locked files
4.在客户端安装支持文件共享服务的软件包:
[root@localhost ~]# yum install -y cifs-utils
……安装过程省略……
5.创建并编辑用户认证文件:
[root@localhost ~]# touch auth.smb
[root@localhost ~]# vim auth.smb
username=yemao
password=971224
domain=MYGROUP
6.创建一个用于挂载Samba服务共享资源的目录,并把挂载信息写入到/etc/fstab文件中,确保系统重启后自动挂载:
[root@localhost ~]# mkdir /database
[root@localhost ~]# vim /etc/fstab
//192.168.32.143/database /database cifs credentials=/root/auth.smb 0 0
[root@localhost ~]# mount -a