samba

Samba

1.Samba概述

Samba最先在Linux和Windows两个平台之间架起了一座桥梁,正是由于Samba的出现,我们可以在Linux系统和Windows系统之间互相通信,比如拷贝文件,实现不同操作系统之间的资源共享等等,我们可以将其架设成一个功能非常强大的文件服务器,也可以将其架设成打印服务器提供本地和远程联机打印。

2.Samba应用环境

文件和打印机共享:文件和打印机共享是Samba的主要功能,SMB进程实现资源共享,将文件和打印机发布到网络之中,以供用户可以访问。

身份验证和权限设置:smbd 服务支持user mode和domain mode等身份验证和权限设置模式,通过加密方式可以保护共享的文件和打印机。

名称解析:Samba通过nmbd服务可以搭建NBNS(netBIOS Name Service)服务器,提供名称解析,将计算机的NetBIOS名解析为IP地址。

浏览服务:局域网中,Samba服务器可以成为本地主浏览服务器(LMB),保存可用资源列表,当使用客户端访问Windows网上邻居是,会提供浏览列表,并显示共享目录,打印机等资源。

**端口号:**139和445

在早期,SMB 运行在NBT协议(NetBIOS over TCP/IP)上,使用UDP协议的137、138及TCP协议的139端口
在这里插入图片描述
NETBIOS协议

NetBIOS是Network Basic Input/Output System的建成,网络基本输入/输出系统协议一般只用于局域网通信的一套API,是由IBM公司开发的。与要勇于:通过NETBIOS协议获得计算机名称然后把计算机名解析成对应的IP地址。

模式:C/S模式(客户端/服务器)

安装Samba:

[root@localhost ~]# yum install samba

启动Samba服务:

[root@localhost ~]# service smb start

查看是否启动成功:

[root@localhost ~]# service smb status
在这里插入图片描述

3.Samba配置文件详解

修改配置文件,举例:

配置文件位置:

/etc/samba/smb.conf.example 或 /etc/samba/smb.conf

Samba常规服务器配置

基本 Samba服务器的搭建流程主要分为四个步骤:

  • 编辑主配置文件smb.conf,指定需要共享的目录,并为共享目录设置共享权限。
  • 在smb.conf文件中指定日志文件名称和存放路径。
  • 设置共享目录的本地系统权限及samba共享权限。
  • 从新加载配置文件或从新启动smb服务,使配置生效

smb.conf大致分为三个部分

1.samba配置简介

smb.conf文件的开头部分为samba配置简介,告诉我们smb.conf文件的作用及相关信息。

smb.comf中还有以分号";"开头,这些都是samba配置的格式范例,默认是不生效的

去掉前面的";"并加以修改来设置其参数。

注:"#"也是表示注释

2.Global Settings

Global Settings设置为全局变量区域。全局变量就是说我们只要在global中进行设置,那么该设置项就是针对所有共享资源生效。
在这里插入图片描述
格式:字段=设定值

[global]常用字段及设置方法:

1)设置samba服务器所在工作组或域名

workgroup = test #工作组

2)服务器描述,服务器描述实际上类似于备注信息

server string = test Samba Server

3)设置samba服务器安全模式。常见模式有两种:share安全级别模式和user安全级别模式
在这里插入图片描述
(1)share安全级别模式

客户端登录samba服务器,不需要输入用户名和密码就可以浏览samba服务器的资源,适用于公共的共享资源,安全性差,需要配合其他权限设置,保证samba服务器的安全性

(2)user安全级别模式

客户端登录samba服务器,需要提交合法账号和密码,经过服务器验证才可以访问共享组员,服务器默认为此级别模式

3.Share Definitions共享服务的定义

[homes]为特殊共享目录,表示用户主目录。

[printers]表示共享打印机
在这里插入图片描述
配置一个共享资源:

[share] #设置共享名 其中“share”可以替换为自己的名称

​ comment = Home Directories #描述

​ browseable = yes #是否允许查看共享内容。若为否,后期通过绝对路径可查看到。

​ path = /share #共享路径,写绝对路径

​ public = yes #允许匿名查看

1)设置共享名

共享资源发布后,必须为每个共享目录或打印机设置不同的共享名,给网络用户访问时使用,并且共享名可以与原目录名不同。

2)共享资源描述

格式:comment = 备注信息

举个例子:samba 服务器上有个/sales 目录存放恭喜销售部的数据,为了对公司部门员工进行区分,可以添加备注信息

3)共享路径

共享资源的原始完整路径

格式:path = 绝对地址路径

samba服务器上/share/tools目录存放常用工具软件,需要发布该目录为共享。

4)设置匿名访问

共享资源如果对匿名访问进行设置,可以更改public字段

格式:

public = yes #允许匿名访问

public = no #禁止匿名访问

5)设置访问用户

如果共享资源存在重要数据的话,需要对访问用户审核,我们可以使用valid users字段进行设置。

格式:

valid users = 用户名

valid users = @组名

6)设置目录只读

共享目录如果限制用户的读写操作,我们可以通过readonly实现

格式:

readonly = yes #只读

readonly = no #读写

7)设置目录可写

如果共享目录允许用户写操作,可以使用writable 或 write list两个字段进行设置

writable 格式:

writable = yes #读写

wirtable = no #只读

write list 格式:

write list = 用户名

write list = @组名

Samba 服务日志文件

在/etc/samba/smb.conf.example文件中,log file为设置samba日志的字段。
在这里插入图片描述

4.Samba案例

例1:匿名共享

1.创建共享目录

[root@localhost ~]# mkdir /share

[root@localhost ~]# cp /etc/passwd /share

2.修改配置文件

vim /etc/samba/smb.conf.example

[global]

​ workgroup = test

​ server string = test Samba Server

​ security = share(匿名共享)

在配置文件的最后面设置

[public] #设置共享名
comment = test Data #描述信息
path = /share #设置共享路径,要写绝对路径
public = yes #允许匿名查看

重启smb服务

[root@localhost ~]# server smb restart

测试:

在电脑文件夹的地址栏中输入linux的 “\\+IP” 地址并回车
在这里插入图片描述
同理,在浏览器中输入 “\\+IP” 地址并回车,也可以访问到smb服务器
在这里插入图片描述
可以访问smb服务器的文件,但是没有权限进行创建文件。
在这里插入图片描述

例2:用户名密码共享

通过用户名和密码共享文件,只有知道用户名与密码的用户可以查看此共享文件夹。我们需要在全局设置中将security设置为user 安全级别,这样就启用了samba服务器的身份验证机制,然后再共享目录下设置valid user字段,配置只允许某些人可以访问这个共享目录。

注意:一定要先制定存放密码的文件位置:

1)修改samba主配置文件 smb.conf.example

改: passdb backend = tbdsam

为: passdb backend = smbpasswd

​ smb passwd file = /etc/samba/smbpasswd
在这里插入图片描述
重启samba服务

[root@localhost ~]# server smb restart

2)添加用户和组并添加相应samba账号

使用groupadd命令添加组,然后执行useradd命令和passwd命令添加用户和密码

[root@localhost ~]# groupadd testgroup

[root@localhost ~]# useradd -g testgroup test01

[root@localhost ~]# useradd -g testgroup test02

接下来为组成员添加相应的samba账号

[root@localhost ~]# smbpasswd -a test01

New SMB password:123456

Retype new SMB passowrd:123456

[root@localhost ~]# smbpasswd -a test02

New SMB password:123456

Retype new SMB passowrd:123456

查看组成员是否添加成功:

[root@localhost ~]# cat /etc/samba/smbpasswd

test01:500:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:32ED87BDB5FDC5E9CBA88547376818D4:[U ]:LCT-56FBDA3D:

test02:501:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:32ED87BDB5FDC5E9CBA88547376818D4:[U ]:LCT-56FBDA4F:

创建共享目录:

[root@localhost ~]# mkdir /test

[root@localhost ~]# cp/etc/hosts /test/

修改配置文件,指定共享目录,设置访问权限
在这里插入图片描述
[test] #设置共享目录的共享名为test
comment = test Data
path = /test #设置共享目录的绝对路径为/test
valid users = @test #设置允许访问的用户为test组内的用户

重启服务

[root@localhost ~]# server smb restart

访问samba服务器:

打开文件夹在地址栏中输入"\\+ip地址"并且回车,此时会弹出一个输入用户名与密码的窗口。
在这里插入图片描述
输入用户名与密码,点击“确定”按钮即可访问smb服务器。

注意:当想要通过另一个用户名访问samba服务器时,可以再cmd窗口中使用net use查看,已连接的用户,使用net use* /delete命令删除当前已连接的用户

5.扩展内容

1.隐藏共享目录

browseable = no

这用用户访问共享目录后看不到对应目录,需要写入目录的绝对URL进行访问。

2.控制访问源

hosts allow 和 hosts deny字段的使用

hosts allow 字段定义允许访问的客户端

hosts deny 字段定义禁止访问的客户端

举例:

如果公司现在要求共享目录test 只允许192.168.1.0/24 网段的主机访问,同时禁止192.168.1.3 IP地址的访问

hosts allow = 192.168.1. #允许192.168.1.0/24网段访问

hosts deny = 192.168.1.3 #进制192.168.1.3主机访问

注:

当hosts allow 和hosts deny同时设置是,hosts allow 生效,如果这样的话,上面的这两项设置192.168.1.3就是不生效的,对于这种情况,可以使用EXCEPT进行排除

hosts allow = 192.168.1. EXPECT 192.168.1.3

3.控制写入权限

writeable = yes #允许授权用户写入

write list = test01#允许单个用户写入

4.用户账号映射

前面说,samba的账号是保存在smbpasswd文件中,并且可以访问samba服务气的账号也必须对用一个同名的系统账号,基于这一点,对于某些黑客来说,只要知道samba服务器的账号,就等于知道了Linux系统账号,只要破解samba账号加以利用就可以共计samba服务器。所以我们要是用用户账号映射这个功能来解决这个问题

用户账号映射这个功能需要建立一个账号映射关系表,里面记录了samba账号和虚拟账号的对应关系,客户端访问samba服务器时就是用虚拟账户来登录

1)编辑主配置文件/etc/samba/smb.conf.example

在[global]下添加一行字段username map = /etc/samba/smbusers开启账号映射功能
在这里插入图片描述
创建samba用户

[root@localhost ~]# useradd rm

[root@localhost ~]# smbpasswd -a rm

2)编辑/etc/samba/smbusers

smbusers文件保存账号映射关系,具有固定格式:

samba 账号 = 虚拟账号(映射账号)

[root@localhost ~]# vim /etc/samba/smbusers

#Linux_name = SMB_name1 SMB_name2…

root = adminstrator admin

nobody = guest pcguest smbguest

rm = zxj jingyu

~

账号rm就是我们创建的samba账号(同时也是linux系统账号),zxj及jingyu就是映射的账号名(虚拟账号),账号rm在我们访问共享目录是只要输入zxj或jinyu就可以成功访问了,但是实际上访问samba服务器的还是我们的rm账号,这样一来就解决了安全问题。

3)重启samba服务:service smb restart

4)测试一下

输入我们自定义的映射账号zxj,不需要输入rm,映射账号zxj密码和rm账号一样,访问成功后显示的也是rm目录的共享内容。
在这里插入图片描述
在这里插入图片描述

现在就可以通过映射账号浏览共享目录了

注意:强烈建议不要将samba用户的密码和本地系统用户的密码设置成一样,可以避免非法用户使用samba账号登录系统非法破坏。

笔记原视频:https://www.bilibili.com/video/BV1GW411j7TG

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值