目录
一.认识Samba服务器
1.了解Samba应用环境
2.了解SMB协议
3.掌握Samba的工作原理
二.配置Samba服务
1.安装并启动Samba服务
2.了解Samba服务器配置的工作流程
基本的Samba服务器的搭建流程主要有五个步骤
Smaba的工作流程如图
3.主要配置文件smb.conf
Ⅰ.Samba服务程序中的参数及其作用
4.Samba服务的日志文件和密码文件
1.Samba服务日志文件
2.Samba服务密码文件
三.user服务器示例解析
四.配置Samba客户端
1.Windows客户端访问samba共享
2.linux客户端访问Samba共享
Ⅰ.Ⅱ在Linux客户端上安装samba-client和cifs-untils
Ⅱ.Linux客户端使用smbclient命令访问服务器
Samba服务器搭建起了Linux与Windows沟通的桥梁,并且提供不同系统的共享服务,还能拥有强大的打印服务功能。
一.认识Samba服务器
Samba服务器最先在Linux和Windows两个平台之间架起了一座桥梁。我们可以在linux系统和Windows系统之间相互通信,比如复制文件,实现不通操作系统之间的资源共享等。我们可以将其架设称一个功能非常强大的文件服务器,也可以将其架设成打印服务器提供本地和远程联机打印。
1.了解Samba应用环境
文件和打印机共享:文件和打印机共享是Samba的主要功能,通过SMB进程实现资源共享,将文件和打印机发布到网络之中,以供用户访问身份验证和权限设置:smbd服务支持user mode和domain mode等身份验证和权限设置模式,通过加密方式可以保护共享的文件和打印机名称解析:Samba通过nmbd服务可以搭建NBNS服务器,提供名称解析,将计算机的NetBIOS名解析称IP地址。浏览服务:局域网中,Samba服务器可以成为本地主浏览器(LMB)。保存可用资源列表,当使用客户端访问Windows网上另据时,会根据浏览列表,显示共享目录,打印机等资源。
2.了解SMB协议
SMB(Server Message Block)通信协议是微软(Microsoft)和英特尔(Intel)在1987年制定的协议,主要是作为Microsoft网络的通讯协议。SMB 是在会话层(session layer)和表示层(presentation layer)以及小部分应用层(application layer)的协议。
SMB使用了NetBIOS的应用程序接口 (Application Program Interface,简称API)。另外,它是一个开放性的协议,允许了协议扩展——使得它变得更大而且复杂;大约有65个最上层的作业,而每个作业都超过120个函数,
3.掌握Samba的工作原理
Samba服务功能强大,这与通信是基于SMB协议有大的关系。SMB协议不仅能够提供目录和打印机共享,还支持认证和权限设置等功能。在早期,SMB运行于NBT协议(NetBIOS over TCP/IP)上,使用UDP协议的137、138及TCP协议的139端口,但随着后期开发,它可以直接运行于TCP/IP协议上,没有额外的NBT层,使用TCP协议的445端口。
二.配置Samba服务 1.安装并启动Samba服务
[root@localhost ~]# yum -y install samba //安装Samba服务 [root@localhost ~]# rpm -qa | grep samba //检测系统中是否安装了Samba服务
[root@localhost ~]# systemctl restart smb
[root@localhost ~]# systemctl enable smb.service //启动Samba服务和设为开机自启
2.了解Samba服务器配置的工作流程 基本的Samba服务器的搭建流程主要有五个步骤 编辑主配置文件smb.conf,指定需要共享的目录,并为共享目录设置共享权限在smb.conf文件中指定日志文件名称和存放路径设置共享目录的本地系统权限重新加载配置文件或重新启动SMB服务,使配置生效关闭防火墙或者放行Smb服务,同时设置SElinux为允许Smaba的工作流程如图 客户端请求访问Samba服务器上的共享目录(requst)Samba服务器接收到请求后,会查询主配置文件smb.conf,看是否共享了目录,如果共享了目录则查看客户端是否有权限访问Samba服务器会将本次访问信息记录在日志文件之中,日志文件的名称和路径都需要我们设置。如果客户端满足访问权限设置,则允许客户端进行访问 3.主要配置文件smb.conf
Smaba的工作流程如图 客户端请求访问Samba服务器上的共享目录(requst)Samba服务器接收到请求后,会查询主配置文件smb.conf,看是否共享了目录,如果共享了目录则查看客户端是否有权限访问Samba服务器会将本次访问信息记录在日志文件之中,日志文件的名称和路径都需要我们设置。如果客户端满足访问权限设置,则允许客户端进行访问 3.主要配置文件smb.conf
Samba的配置文件一般放在/etc/samba目录中,主配置文件名为smb.conf
Ⅰ.Samba服务程序中的参数及其作用 Samba服务程序中的参数及其作用 作用范围 参数 作用
[global]
#全局配置
workgroup = SAMBA#工作组名称 security = user#安全验证的方式。需验证来访问主机提供的口令才可以访问security = share#来访主机无需验证口令;比较方便,但不安全security = server#使用独立的远程主机验证来访主机提供的口令security =domain#使用域控制器进行身份验证passdb backend =tdbsam#定义后台的类型,共有三种。第一中:创建数据库文件并使用pdbedit命令建立Samba服务程序的用户passdb backend =smbpasswd#使用smbpasswd命令为系统用户Samba服务程序的密码passdb backend = ldapsam#ldapsam:基于LDAP服务进行账户验证 load printers = yes#设置在Samba服务启动时是否共享打印机设备cups options = raw#打印机的选项
[homes]
#共享参数
comment = Home Directories#描述信息browseable = No#指定共享目录是否在“网上邻居”中可见read only = No#指定共享目录是否仅读browseable = No#在配置文件中的共享文件下敲这个命令,只有的通过samba服务共享当前文件是否允许可见。其他的非当前共享文件不影响本身效果printers#打印机共享参数Ⅱ.Share Definitions 共享服务的定义 1.设置共享名
格式:
【共享名】
2.共享资源描述
格式:
comment= 备注信息
3.共享路径
格式:
path=绝对地址路径
4.设置匿名访问
格式:
public =yes //允许匿名当访问
public =no //不允许匿名当访问
1.设置共享名
格式:
【共享名】
2.共享资源描述
格式:
comment= 备注信息
3.共享路径
格式:
path=绝对地址路径
4.设置匿名访问
格式:
public =yes //允许匿名当访问
public =no //不允许匿名当访问
例题1:
Samba服务器中有个共享目录为/share,需要发布该目录成为共享目录,定义共享目录名为public。要求:允许浏览,允许只读,允许匿名访问。设置如下所示
5.设置访问用户
格式:
valid users = 用户名
valid users = @组名
例题2:
Samba服务器/share/tech目录中存放了公司技术部数据,只允许技术部员工和经理访问,技术部组为/tech,经理账号为manager
6.设置目录只读
格式:
read only = yes //只读
read only = no //读写
7.设置过滤主机
格式:
hosts allow = 192.168.10. server.abc.com
//允许来自192.168.10.0或server.abc.com的访问者访问Samba服务器资源hosts deny = 192.168.10. server.abc.com
//拒绝来自192.168.10.0或server.abc.com的访问者访问Samba服务器资源
例题3:
Samba服务器公共目录/public存放大量共享数据,为保证目录安全,仅允许192.168.80.0的网络的主机访问,并且只允许读取,禁止写入。
8.设置目录可写
格式:
writable = yes //读写
writable = no //只读
9.设置目录只允许部分用户或组读写
格式:
writable list = 用户名 //允许该用户读写
writable list = @组 //允许该组读写
10.[home]为特殊共享目录,表示用户主目录。[printers]表示共享打印机
4.Samba服务的日志文件和密码文件 1.Samba服务日志文件
日志文件对于Samba非常重要,他储存着客户端访问Samba服务器的信息,以及Samba服务的错误提示信息等,可以通过分析日志,帮助解决客户端访问和服务器维护等问题
Samba服务的日志文件默认在/var/log/samba/中
2.Samba服务密码文件
Samba服务器发布共享资源后,客户端访问Samba服务器,需要提交用户名和密码进行身份验证,验证合格才可以进行登录。
Samba服务为了实现客户身份验证功能,将用户名和密码信息存放在/etc/samba/smbpasswd中。
建立一个Samba账户。
格式:smbpasswd -a 用户名
你会发现,刚开始会报错,这是因为linux本地用户里没有reading这个用户,在linux系统里面添加一个reading用户,再次创建reading用户,就成功了。
所以:在建立Samba账号之前,一定要先建立一个与Samba账号同名的系统账号
三.user服务器示例解析 示例1:如果公司有多个部门,因工作需要,就必须分门别类地建立相应部门地目录。要求将销售部的资料存放在Samba服务器的/companydate/sales/目录下集中管理,以便销售人员浏览,并且该目录只允许销售部员工访问。
需求分析:在/companydata/sales/ 目录中存放有销售部的重要数据,为了保证其他部门无法查看其内容,我们需要将全局配置中security 设置为user安全级别。这样就启用了Samba服务器的身份验证机制。然后在共享目录/companydata/sales下设置valid users 字段,配置只允许销售部员工访问这个共享目录
(1).建立共享目录,并在其下建立测试文件
[root@localhost ~]# mkdir -p /companydate/sales/
[root@localhost ~]# touch /companydate/sales/test_share.tar
(2).添加销售部用户和组并添加相对应的Samba账户、
[root@localhost ~]# groupadd sales //创建销售组sales
[root@localhost ~]# useradd -g sales -p centos sales1 //创建销售组组成员sales1
[root@localhost ~]# useradd -g sales -p centos sales2 //创建销售组组成员sales2
[root@localhost ~]# useradd test_user1 //创建测试用户
[root@localhost ~]# echo centos | passwd --stdin test_user1 //设置密码
[root@localhost ~]# smbpasswd -a sales1 //创建Samba账户
[root@localhost ~]# smbpasswd -a sales2
(3).修改Samba主配置文件
[root@localhost ~]# vim /etc/samba/smb.conf
在全局配置里设置user安全级别模式,默认值
[sales] -----设置共享目录的共享名为sales
comment = sales
path = /companydate/sales --设置共享目录的绝对路径
writable = yes ----设置可以读写
browseable =yes
valid users = @sales --设置可以访问的用户组为sales组
(4).设置共享目录的本地系统权限
[root@localhost ~]# chmod -R 777 /companydate/sales/
[root@localhost ~]# chown -R sales1:sales /companydate/sales/
[root@localhost ~]# chown -R sales2:sales /companydate/sales/
(5).关闭SElinux和关闭防火墙或者让防火墙放行
[root@localhost ~]# vim /etc/selinux/config
把enforcing改为disabled
[root@localhost ~]# firewall-cmd --list-all //列出所有的放行名单
[root@localhost ~]# firewall-cmd --permanent --add-service=samba //添加放行服务samba
[root@localhost ~]# firewall-cmd --reload //重新加载防火墙
[root@localhost ~]# firewall-cmd --list-all //列出所有的放行名单
(7).重新加载Samba服务
[root@localhost ~]# systemctl restart smb
四.配置Samba客户端
1.Windows客户端访问samba共享 现在我们的系统大多都是win10,win10的samba服务都是默认关闭的,所以
第一:Windows10开启Samba
打开控制面板:win+r打开运行框,输入control
进入程序和功能,点击启用或关闭Windows功能
找到SMB 1.0/CIFS文件共享支持,一般打开之后会重启电脑
重启之后,打开资源管理器
输入Samba服务端的ip地址
输入用户名和密码,就是刚才创建的
2.linux客户端访问Samba共享 开启centos8虚拟机作为Linux的客户端
Ⅰ.Ⅱ在Linux客户端上安装samba-client和cifs-untils
[root@localhost ~]# yum -y install samba-client
[root@localhost ~]# yum -y install cifs-utils.x86_64
Ⅱ.Linux客户端使用smbclient命令访问服务器
格式为:smbclient -L 目标主机ip地址/主机名 -U 登录用户%密码
不输入用户名和密码,这样表示匿名用户登录,然后显示匿名用户可以看到的共享目录列表
只有输入用户名和密码,才有权限浏览和访问sales共享目录
Ⅲ.使用smbclient命令行共享访问模式浏览共享的资料
格式:smbclient //目标IP地址或主机名/共享目录 -U 用户名%密码
进入交互式界面,输入“?”将列出具体命令
ls 列出文件
不能创建文件,可以创建目录-
Ⅳ.linux客户端使用mount命令挂载共享目录
格式:mount -t cifs //目标IP地址或主机名/共享目录名称 挂载点 -o username=用户名
[root@localhost ~]# mkdir -p /testdir/samdata //递归创建目录,挂载点
[root@localhost ~]# mount -t cifs //192.168.80.128/sales /testdir/samdata/ -o username=sales1
Password for sales1@//192.168.80.128/sales: ****** //输入sales1密码
[root@localhost ~]# cd /testdir/samdata/
[root@localhost samdata]# ls
1.Samba服务日志文件
日志文件对于Samba非常重要,他储存着客户端访问Samba服务器的信息,以及Samba服务的错误提示信息等,可以通过分析日志,帮助解决客户端访问和服务器维护等问题
Samba服务的日志文件默认在/var/log/samba/中
2.Samba服务密码文件
Samba服务器发布共享资源后,客户端访问Samba服务器,需要提交用户名和密码进行身份验证,验证合格才可以进行登录。
Samba服务为了实现客户身份验证功能,将用户名和密码信息存放在/etc/samba/smbpasswd中。
建立一个Samba账户。
格式:smbpasswd -a 用户名
你会发现,刚开始会报错,这是因为linux本地用户里没有reading这个用户,在linux系统里面添加一个reading用户,再次创建reading用户,就成功了。
所以:在建立Samba账号之前,一定要先建立一个与Samba账号同名的系统账号
示例1:如果公司有多个部门,因工作需要,就必须分门别类地建立相应部门地目录。要求将销售部的资料存放在Samba服务器的/companydate/sales/目录下集中管理,以便销售人员浏览,并且该目录只允许销售部员工访问。
需求分析:在/companydata/sales/ 目录中存放有销售部的重要数据,为了保证其他部门无法查看其内容,我们需要将全局配置中security 设置为user安全级别。这样就启用了Samba服务器的身份验证机制。然后在共享目录/companydata/sales下设置valid users 字段,配置只允许销售部员工访问这个共享目录
(1).建立共享目录,并在其下建立测试文件
[root@localhost ~]# mkdir -p /companydate/sales/
[root@localhost ~]# touch /companydate/sales/test_share.tar(2).添加销售部用户和组并添加相对应的Samba账户、
[root@localhost ~]# groupadd sales //创建销售组sales
[root@localhost ~]# useradd -g sales -p centos sales1 //创建销售组组成员sales1
[root@localhost ~]# useradd -g sales -p centos sales2 //创建销售组组成员sales2
[root@localhost ~]# useradd test_user1 //创建测试用户
[root@localhost ~]# echo centos | passwd --stdin test_user1 //设置密码
[root@localhost ~]# smbpasswd -a sales1 //创建Samba账户
[root@localhost ~]# smbpasswd -a sales2(3).修改Samba主配置文件
[root@localhost ~]# vim /etc/samba/smb.conf
在全局配置里设置user安全级别模式,默认值
[sales] -----设置共享目录的共享名为sales
comment = sales
path = /companydate/sales --设置共享目录的绝对路径
writable = yes ----设置可以读写
browseable =yes
valid users = @sales --设置可以访问的用户组为sales组
(4).设置共享目录的本地系统权限
[root@localhost ~]# chmod -R 777 /companydate/sales/
[root@localhost ~]# chown -R sales1:sales /companydate/sales/
[root@localhost ~]# chown -R sales2:sales /companydate/sales/(5).关闭SElinux和关闭防火墙或者让防火墙放行
[root@localhost ~]# vim /etc/selinux/config
把enforcing改为disabled[root@localhost ~]# firewall-cmd --list-all //列出所有的放行名单
[root@localhost ~]# firewall-cmd --permanent --add-service=samba //添加放行服务samba
[root@localhost ~]# firewall-cmd --reload //重新加载防火墙
[root@localhost ~]# firewall-cmd --list-all //列出所有的放行名单
(7).重新加载Samba服务
[root@localhost ~]# systemctl restart smb
四.配置Samba客户端
1.Windows客户端访问samba共享 现在我们的系统大多都是win10,win10的samba服务都是默认关闭的,所以
第一:Windows10开启Samba
打开控制面板:win+r打开运行框,输入control
进入程序和功能,点击启用或关闭Windows功能
找到SMB 1.0/CIFS文件共享支持,一般打开之后会重启电脑
重启之后,打开资源管理器
输入Samba服务端的ip地址
输入用户名和密码,就是刚才创建的
2.linux客户端访问Samba共享 开启centos8虚拟机作为Linux的客户端
Ⅰ.Ⅱ在Linux客户端上安装samba-client和cifs-untils
[root@localhost ~]# yum -y install samba-client
[root@localhost ~]# yum -y install cifs-utils.x86_64
Ⅱ.Linux客户端使用smbclient命令访问服务器
格式为:smbclient -L 目标主机ip地址/主机名 -U 登录用户%密码
不输入用户名和密码,这样表示匿名用户登录,然后显示匿名用户可以看到的共享目录列表
只有输入用户名和密码,才有权限浏览和访问sales共享目录
Ⅲ.使用smbclient命令行共享访问模式浏览共享的资料
格式:smbclient //目标IP地址或主机名/共享目录 -U 用户名%密码
进入交互式界面,输入“?”将列出具体命令
ls 列出文件
不能创建文件,可以创建目录-
Ⅳ.linux客户端使用mount命令挂载共享目录
格式:mount -t cifs //目标IP地址或主机名/共享目录名称 挂载点 -o username=用户名
[root@localhost ~]# mkdir -p /testdir/samdata //递归创建目录,挂载点
[root@localhost ~]# mount -t cifs //192.168.80.128/sales /testdir/samdata/ -o username=sales1
Password for sales1@//192.168.80.128/sales: ****** //输入sales1密码
[root@localhost ~]# cd /testdir/samdata/
[root@localhost samdata]# ls
现在我们的系统大多都是win10,win10的samba服务都是默认关闭的,所以
第一:Windows10开启Samba
打开控制面板:win+r打开运行框,输入control
进入程序和功能,点击启用或关闭Windows功能
找到SMB 1.0/CIFS文件共享支持,一般打开之后会重启电脑
重启之后,打开资源管理器
输入Samba服务端的ip地址
输入用户名和密码,就是刚才创建的
开启centos8虚拟机作为Linux的客户端
Ⅰ.Ⅱ在Linux客户端上安装samba-client和cifs-untils
[root@localhost ~]# yum -y install samba-client
[root@localhost ~]# yum -y install cifs-utils.x86_64Ⅱ.Linux客户端使用smbclient命令访问服务器
格式为:smbclient -L 目标主机ip地址/主机名 -U 登录用户%密码
不输入用户名和密码,这样表示匿名用户登录,然后显示匿名用户可以看到的共享目录列表
只有输入用户名和密码,才有权限浏览和访问sales共享目录
Ⅲ.使用smbclient命令行共享访问模式浏览共享的资料
格式:smbclient //目标IP地址或主机名/共享目录 -U 用户名%密码
进入交互式界面,输入“?”将列出具体命令
ls 列出文件
不能创建文件,可以创建目录-
Ⅳ.linux客户端使用mount命令挂载共享目录
格式:mount -t cifs //目标IP地址或主机名/共享目录名称 挂载点 -o username=用户名
[root@localhost ~]# mkdir -p /testdir/samdata //递归创建目录,挂载点
[root@localhost ~]# mount -t cifs //192.168.80.128/sales /testdir/samdata/ -o username=sales1
Password for sales1@//192.168.80.128/sales: ****** //输入sales1密码
[root@localhost ~]# cd /testdir/samdata/
[root@localhost samdata]# ls