目录
一:samba概述
1.1samba简介
1.2samba的监听端口
1.3samba的进程
1.4samba安全级别
二:samba服务的特点
三:samba的主要作用
四:常见文件服务器软件的对比
五:samba配置文件
5.1samba主配置文件
5.2常用配置文件参数
六:搭建samba服务
6.1安装samba服务
6.2启动服务、关闭防火墙
6.3创建用户
6.4pdbebitd的参数说明
6.5修改配置文件
6.6创建共享文件夹
6.7设置samba用户登录密码
七:客户端进行验证
八:总结
Samba 是在 Linux 和 UNIX 系统上实现 SMB 协议的一个免费软件,由服务器及客户端程序构成。
NFS 与 samba 一样,也是在网络中实现文件共享的一种实现,但不幸的是,其不支持 windows 平台,samba 是能够在任何支持 SMB 协议的主机之间共享文件的一种实现,当然也包括 windows。
SMB 是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。
SMB 协议是 C/S 型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。
TCP | UDP |
139 | 445 | 137 | 138 |
tcp 端口相对应的服务是 smbd 服务,其作用是提供对服务器中文件、打印资源的共享访问
udp 端口相对应的服务是 nmbd 服务,其作用是提供基于 NetBIOS 主机名称的解析
进程 | 对应 |
nmbd | 对应 netbios |
smbd | 对应 cifs 协议 |
winbindd + ldap | 对应 Windows AD 活动目录 |
samba服务器的安全级别有三个:user,server,domain
安全级别 | 作用 |
user | 基于本地的验证 |
server | 由另一台指定的服务器对用户身份进行认证 |
domain | 由域控进行身份验证 |
以前的 samba 版本支持的安全级别有四个,分别是 share,user,server,domain
share 是用来设置匿名访问的,但现在的版本已经不支持 share 了,但是还是可以实现匿名访问的只是配置方式变了
smaba最大的特点就是可以用于linux和windows之间进行文件共享和打印机共享samba不仅仅可以用于linux和windows之间
samba还可以用于两台linux之间共享
由于linux平台诞生了一个更好的工具,nfs网络文件共享系统,专门用于linux之间文件数据共享●因此samba更多是使用linux和windows之间
(1)文件共享(最主要作用)
(2)打印服务器
(3)samba登陆时身份验证
(4)由于samba基于Netbios,所以可以进行 windows的主机名解析
服务名称 | 使用范围 | 服务器端 | 客户端 | 局限性 |
FTP | 局域网和公网 | Windows Linux |
Windows Linux |
无法直接在服务器端修改数据 |
samba | 内网 | Windows Linux |
Windows Linux |
只能自内网使用 |
NFS | 内网和公网 | Linux | Linux | 只能在Linux之间使用 |
/etc/samba/smb.conf(主配置文件)
samba三大组成 | 作用 |
[global] | 全局配置,此处的设置项对整个 samba 服务器都有效 |
[homes] | 宿主目录共享设置,此处用来设置 Linux 用户的默认共享,对应用户的宿主目录。 当用户访问服务器中与自己用户名同名的共享目录时,通过验证后将会自动映射到该用户的宿主目录中 |
[printers] | 打印机共享设置 |
参数 | 作用 |
workgroup | 表示设置工作组名称 |
server string | 表示描述samba服务器 |
security | 表示设置安全级别,其值可为 share、user、server、domain |
passdb backend | 表示设置共享帐户文件的类型,其值可为 tdbsam(tdb数据库文件)、ldapsam(LDAP目录认证)、smbpasswd(兼容旧版本 samba 密码文件) |
comment | 表示设置对应共享目录的注释,说明信息,即文件共享名 |
browseable | 表示设置共享是否可见 |
writable | 表示设置目录是否可写 |
path | 表示共享目录的路径 |
guest ok | 表示设置是否所有人均可访问共享目录 |
public | 表示设置是否允许匿名用户访问 |
write list | 表示设置允许写的用户和组,组要用 @ 表示,例如 write list = root,@root |
valid users | 设置可以访问的用户和组,例如 valid users = root,@root |
hosts deny | 设置拒绝哪台主机访问,例如 hosts deny = 192.168.137.10 |
hosts allow | 设置允许哪台主机访问,例如 hosts allow = 192.168.137.15 |
printable | 表示设置是否为打印机 |
实验的目的:在linux虚拟机上(centos7环境)搭建一个samba服务并且在windows客户端访问
yum install -y samba #安装samba服务
yum list samba #列出软件包的信息
yum remove samba #卸载软件包
yum check-update samba #检查是否有可更新的软件包
yum update samba #更新samba软件包
systemctl start smb.service
systemctl enable smb.service
systemctl stop firewalld
setenforce 0
groupadd jiuchang
useradd -M kenan -s /sbin/nologin/ -g jiuchang
useradd -M xiaolan -s /sbin/nologin/ -g jiuchang
id kenan
id xiaolan
-a, --create 新建samba用户
-r, --modify 修改samba用户
-x, --delete 删除samba用户
-L, --list 列出全部samba用户,读取passdb.tdb数据库文件
-v, --verbose 显示详细信息
-c, --account-control=STRING 账户控制值
-w, --smbpasswd-style 以smbpasswd格式输出
-u, --user=USER 使用的用户
-N, --account-desc=STRING 设置账户描述
-f, --fullname=STRING 设置全名
-h, --homedir=STRING 设置家目录
-D, --drive=STRING 设置家设备
-S, --script=STRING 设置登陆脚本
-p, --profile=STRING 设置配置文件路径
-I, --domain=STRING 设置用户域名
-U, --user SID=STRING 设置用户SID或RID
-M, --machine SID=STRING 设置设备SID或RID
-m, --machine 账户是一个设备账户
-b, --backend=STRING 使用不同的passdb作为默认后端
-i, --import=STRING 指定后段导入用户账户
-e, --export=STRING 导出用户账户到指定后端
--policies-reset 恢复默认策略
-P, --account-policy=STRING 帐户策略的值(如最大密码有效期)
-C, --value=LONG 设置账号策略值
--force-initialized-passwords 强制初始化passdb后端
-z, --bad-password-count-reset 重置错误密码
-Z, --logon-hours-reset 重置登陆时间
--time-format=STRING 时间参数的格式
-t, --password-from-stdin 从标准输入获取密码
-K, --kickoff-time=STRING 设置开始时间
--set-nt-hash=STRING 从nt-hash设置密码
-d, --debuglevel=DEBUGLEVEL 设置debug级别
-s, --configfile=CONFIGFILE 使用备用配置文件
-l, --log-basename=LOGFILEBASE 设置日志文件的基本名称
-V, --version 输出版本号
--option=name=value 从命令行设置smb.conf选项
-?, --help 显示帮助信息
--usage 显示简要的使用信息
编辑配置文件,添加一个以jiuchang作为网络共享文件名的共享目录
vim /etc/samba/sbm.conf
[jiuchang] #共享文件名称(也就是客户端访问时可以看到的那个名字)
comment = this is jiuchang #共享文件夹的描述
path = /home/ceshi #共享文件夹路径
public = yes #是否允许guest账户访问
writable =yes #是否有写权限
directory mask = 0777 #默认创建目录权限
create mask = 0777 #默认创建文件权限
valid users = @jiuchang,root #设置允许访问共享目录的用户@后跟组名,不写此行就对所有用户开放
write list = @jiuchang,root #设置有写权限的用户@后面跟的是组名
browseable = yes #该指定共享目录可浏览
available = yes #该指定共享资源可使用
vim /etc/samba/sbm.conf
[jiuchang]
comment = this is jiuchang
path = /home/ceshi
public = yes
writable =yes
directory mask = 0777
create mask = 0777
valid users = @jiuchang,root
write list = @jiuchang,root
browseable = yes
available = yes
testparm可以用来检测配置文件中是否有语法错误
mkdir ceshi
cd ceshi/
echo "ming zhen tan ke nan" > 1.txt
mkdir yueguang
chmod -R 777 ceshi/
systemctl restart smb.service #启动服务
systemctl reload smb.service #加载配置文件
smbpasswd -a kenan # 将本地用户跟samba用户进行映射
smbpasswd -a xiaolan
pdbedit -a -u kenan
pdbedit -a -u xiaolan
pdbedit -L #查看加入samba服务的用户
win+R \\192.168.137.15(安装samba服务的虚拟机)
在客户端上创建文件测试
进行验证
Samba是根据SMB协议实现的,主要用于Windows和Linux之间共享资源。139端口是在NBT协议基础上的,关闭NBT协议139就废了。而445端口是在TCP/IP协议基础上,现在网络中应该很少有不使用TCP/IP协议的了。最后如果主机两种协议同时支持的话(比如windowsxp以后的操作系统)那么共享访问时候的端口使用优先级为:445>139,所以现在UNC路径访问ip地址都是使用445端口,而访问主机名形式是使用139端口(现在基本不用了)。
关闭139端口的方法:“网络连接/属性/TCPIP协议/属性/高级/WINS中设置启用或者禁用NBT(NetBIOS over TCP/IP)
关闭445端口的方法:防火墙阻塞445端口或者禁用server服务都可以