Samba 服务概述
Samba最先在Linux和Windows两个平台之间架起了一座桥梁,正是由于Samba 的出现,我们可以在Linux 系统和Windows 系统之间互相通信,比如拷贝文件、实现不同操作系统之间的资源共享等等,我们可以将其架设成一个功能非常强大的文件服务器,也可以将其架设成打印服务器提供本地和远程联机打印。
Samba 应用环境
文件和打印机共享∶文件和打印机共享是Samba 的主要功能,SMB进程实现资源共享,将文打印机发布到网络之中,以供用户可以访问。
身份验证和权限设置:smbd服务支持user mode和domain mode等身份验证和权限设置模式,v通过加密方式可以保护共享的文件和打印机.
名称解析:Samba通过nmbd 服务可以搭建NBNS(NetBIOS Name Service)服务器,提供名称解析,将计算机的NetBIOS名解析为IP地址。
浏览服务∶局域网中,Samba 服务器可以成为本地主浏览服务器,保存可用资源列表当使用客户端访问Windows 网上邻居时,会提供浏览列表,显示共享目录、打印机等资源。
端口
查看端口: netstat -tlnp |grep smb
193
445
NetBIOS协议
NetBIOS是Network Basic Input/Output System的简称,网络基本输入/输出系统协议。协议,一般指用于局域网通信的一套API,是由IBM公司开发。主要作用:通过NETBIOS协议获得计算机名称,然后把计算机名解析为对应IP地址。
安装Samba及配置
yum -y install samba
安装完成后会有如下打印

服务启动和关闭
-
启动samba服务
service smb restart
-
加载smb.conf
service smb reload
-
关闭防火墙和SElinux
service iptables stop
setenforce 0
申请一个新的账号
新建用户: useradd 用户名
设置新用户密码: passwd 用户名
删除用户: userdel -r 用户名
groupadd 命令用于创建一个新的工作组,新工作组的信息将被添加到系统文件中
将用户添加到samba用户数据库:smbpasswd -a 用户名
Samba常规服务器配置
基本的Samba服务器的搭建流程主要分为四个步骤∶
- 编辑主配置文件smb.conf,指定需要共享的目录,并为共享目录设置共享权限。
- 在smb.conf 文件中指定文件名称和存放路径。
- 设置共享目录的本地系统权限及samba共享权限。
- 重新加载配置文件或重新启动smb服务,使用配置生效·
配置文件:smb.conf解析
配置文件的路径:
ls /etc/samba/smb.conf
smb.conf配置文件中内容:
-
smb.conf 文件的开头部分为samba配置简介,告诉我们smb.conf 文件的作用及相关信息。
-
smb.conf 中还有以";“分号开头,这些都是samba配置的格式范例,默认是不生效,可以通过去掉前面的”;"并加以修改来设置想使用的功能。#号表示为注释。
-
workgroup = WORKGROUP
说明:设定 Samba Server 所要加入的工作组或者域。
-
server string = Samba Server Version %v
说明:设定 Samba Server 的注释,可以是任何字符串,也可以不填。%v表示显示Samba的版本号
-
security = user
1. share:用户访问Samba Server不需要提供用户名和口令, 安全性能较低。
2. user:Samba Server共享目录只能被授权的用户访问,由Samba Server负责检查账号和密码的正确性。账号和密码要在本Samba Server中建立。
-
log file = /var/log/samba/log.%m
设置Samba Server日志文件的存储位置以及日志文件名称。在文件名后加个宏%m(主机名),表示对每台访问Samba Server的机器都单独记录一个日志文件
-
max log size = 50
说明:设置Samba Server日志文件的最大容量,单位为kB,0代表不限制
-
passdb backend = tdbsam
说明:passdb backend就是用户后台的意思。目前有三种后台:smbpasswd、tdbsam和ldapsam。sam是security account manager(安全账户管理)的简写。
1.smbpasswd:该方式是使用smb自己的工具smbpasswd来给系统用户(真实用户或者虚拟用户)设置一个Samba密码,客户端就用这个密码来访问Samba的资源。smbpasswd文件默认在/etc/samba目录下,不过有时候要手工建立该文件。
2.tdbsam: 该方式则是使用一个数据库文件来建立用户数据库。数据库文件叫passdb.tdb,默认在/etc/samba目录下。passdb.tdb用户数据库 可以使用smbpasswd –a来建立Samba用户,不过要建立的Samba用户必须先是系统用户。我们也可以使用pdbedit命令来建立Samba账户。pdbedit命令的 参数很多,我们列出几个主要的。
pdbedit –a username:新建Samba账户。
pdbedit –x username:删除Samba账户。
pdbedit –L:列出Samba用户列表,读取passdb.tdb数据库文件。
pdbedit –Lv:列出Samba用户列表的详细信息。
pdbedit –c “[D]” –u username:暂停该Samba用户的账号。
pdbedit –c “[]” –u username:恢复该Samba用户的账号。
-
smb passwd file = /etc/samba/smbpasswd
说明:用来定义samba用户的密码文件。smbpasswd文件如果没有那就要手工新建。
-
map to guest = bad user
配置的意思是将所有samba系统主机所不能正确识别的用户都映射成guest用户
-
comment = 任意字符串
说明:comment是对该共享的描述,可以是任意字符串。
-
path = 共享目录路径
说 明:path用来指定共享目录的路径
-
browseable = yes/no
说明:browseable用来指定该共享是否可以浏览
-
writable = yes/no
说明:writable用来指定该共享路径是否可写。
-
available = yes/no
说明:available用来指定该共享资源是否可用。
-
valid users = 允许访问该共享的用户
说明:valid users用来指定允许访问该共享资源的用户。
例如:valid users = test,@dave,@tech(多个用户或者组中间用逗号隔开,如果要加入一个组就用“@组名”表示。)
-
invalid users = 禁止访问该共享的用户
说明:invalid users用来指定不允许访问该共享资源的用户。
例如:invalid users = root,@bob(多个用户或者组中间用逗号隔开。)
-
guest ok = yes/no
说明:意义同“public”。
-
public = yes/no
说明:public用来指定该共享是否允许guest账户访问。
-
write list = 允许写入该共享的用户
说明:write list用来指定可以在该共享下写入文件的用户。
例如:write list = david,@dave
-
hosts deny = 192.168.0.
说明:禁止192.168.0. 网段访问
-
hosts allow = 192.168.0.
说明:允许192.168.0.网段访问
注意事项
安装Samba可能出现的问题
-
因为可能是系统自动升级正在运行,yum在锁定状态中。已经有一个yum进程在运行。

解决措施:
rm -f /var/run/yum.pid
-
出现这个错误一般是没有正确配置镜像文件,需要配置阿里镜像

解决措施:
备份现有repo仓库
1 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
下载并使用阿里云仓库repo
2 curl -o /etc/yum.repos.d/CentOS-Base.repo https://www.xmpan.com/Centos-6-Vault-Aliyun.repo
更新yum
3 yum clean all
4 yum makecache
5 yum -y install samba -y
Samba服务打开,但是无法连接到服务器:

解决措施:
-
打开: 控制面板\程序\程序和功能 -> 启用或关闭Windows功能 -> 勾选SMB 1.0/CIFS 文件共享支持

-
控制面板\网络和 Internet\网络和共享中心\高级共享设置

-
关闭防火墙SElinux
1 service iptables stop
2 setenforce 0
制面板\程序\程序和功能 -> 启用或关闭Windows功能 -> 勾选SMB 1.0/CIFS 文件共享支持
[外链图片转存中…(img-rgjsZEzL-1625100109439)]
-
控制面板\网络和 Internet\网络和共享中心\高级共享设置
[外链图片转存中…(img-iuogrTH7-1625100109440)]
-
关闭防火墙SElinux
1 service iptables stop
2 setenforce 0