本文将学习一下几个方面的内容,将会结合具体的实验来一步步实现。
1、 用户账号的映射
2、 使用IP对客户端进行访问控制
3、 使用域名对客户端进行访问控制
4、 使用通配符对客户端进行访问控制
5、 设置samba的权限
6、 设置samba的隐藏共享
7、 Samba客户端的配置
8、 Samba的排错
Samba服务器的常规配置很容易就可以实现,但是并不能够满足企业的实际需求,所以需要做更加详细的配置。
(一)、用户账号的映射
因为samba服务器的账号必须对应一个同名的系统账号,所以就造成了这样的安全缺陷:只要知道samba服务器的samba账号,就等于知道了服务器的系统账号,只要破解其密码,从而加以利用,就可以来攻击samba服务器。
对于这个问题可以用账号的映射功能来加以解决。
方式:建立一个账号映射关系表,里面记录着samba账号和虚拟账号的对应关系,客户端访问时使用虚拟账号登录。这样告诉客户端用户的samba账号就不是和系统账号相对应的那个账号,而又可以访问samba服务器。
下面是具体实现的步骤
1、 开启用户账号映射功能,在全局设置中添加一行

2、 编辑smbuserssmbusers保存账号映射关系,添加一行用户的账号映射关系

把sale1映射为sky apple
3、重启samba服务

4、验证,在windows客户端用sky 或者apple登录

见下图,登录成功

备注:建议不要把本地系统用户的密码和samba用户的密码设置成为一样。

(二)、使用IP对客户端进行访问控制
需要用到host allow和host deny字段
Host allow定义可以访问的客户端
Host deny 定义禁止访问的客户端
案例:公司内部samba服务器上共享了一个目录sales,该目录文件为销售部的共享目录,公司规定192.168.0.0/16这个网段的IP地址都不能访问该目录,但是192.168.1.1/24这个地址可以访问,对于该需求,我们可做如下配置
编辑samba的主配置文件vi /etc/samba/smb.conf
首先把安全级别改为share模式

sales共享目录下添加hosts字段,如图

Hosts deny = 192.168.0.0表示拒绝所有来自该网段的IP地址的访问

Hosts allow = 192.168.1.1表示允许该IP地址访问
注意:当hosts deny hosts allow字段同时出现的时候,hosts allow优先。
我们在客户端验证一下,用192.168.1.100访问,错误信息如下
这样就达到了IP限制客户端访问的目的

(三)、使用域名对客户端进行限制

示例:公司samba服务器上共享了一个目录public,公司规定.sale.com域和.net域的客户端不能访问,同时,主机名为free的客户端也不能访问
分析:这个案例很明显不适合用IP限制来做,因为一个域中可能会有很多台客户端,所以可以使用域名限制,如图:

注意:域名和域名之间或域名和主机名之间要用“空格”符号隔开

(四)、使用通配符进行访问控制
示例:samba服务器共享了一个目录sales,规定所有人不允许访问,只有主机名为cli-3e723d915cf.的客户端可以访问

把安全级别改回user

将上面设置的主机名加入到samba服务器的本地hosts文件中,让samba可以解析该地址

别忘了重启samba服务

然后到客户端验证一下吧,我们先用boss帐户,可以正常访问

看到上面的共享文件界面后,下面是sales文件夹的内容,访问成功

备注:常用的通配符还有:“*”、“?”、“LOCAL”等

案例:规定所以人不能访问sales目录,只允许192.168.1.0网段的IP地址访问,但是192.168.1.100除外
下面我们看看具体的实现步骤
修改配置文件,使用EXCEPT进行设置

192.168.1.100客户端验证一下

最后说一下hosts deny hosts allow的作用范围

它们的作用范围是不同的,设置在[global]里表示对samba服务器生效,如果设置在目录下,则表示对单一的目录生效
如图:表示只有客户端192.168.1.100能访问samba服务器

如图:表示只有客户端192.168.1.100可以访问public目录

(五)、设置samba的权限

案例:公司samba服务器上有个共享目录sales,公司规定只有boss账号和sales组的账号可以完全控制,其他人只有读取的权限
分析:前面我们学习的writable字段已经不能够满足要求了,因为:当writable = yes时,表示所有人都可以写入,当writable = no时则表死所有人都不可以写入,这时候就要用到write list字段了
实现的步骤如下(省略的步骤可参照前一篇文章):
1、 建立sales组,在组中建立两个账号sale1sale2,建立账号boss
2、 将账号映射到smbpasswd账号,使用smbpasswd –a 账号名
3、 编辑smb配置文件

4、 重载smb服务service smb reload

5、 在客户端验证一下(省略)
(六)、samba的隐藏共享的设置
处于安全的考虑,该功能往往用在较为私密的目录,或是比较重要的目录上。从而保证只有管理员或者一些重要人员才知道samba服务器上有这个目录,而其他的员工则不知道。
Browseable字段可以实现该功能
下面通过一个案例来说明
案例:samba服务器有一个共享目录sales,只有boss用户可以浏览并访问该目录,其他人都不可以浏览和访问该目录
分析:通过为boss单独建立一个配置文件,并且让boss访问的时候能够读取这个单独的配置文件即可。
具体实现的步骤如下:
boss建立独立的配置文件

编辑smb.conf主配置文件,添加一行

在主配置文件中设置隐藏该目录browseable = no

编辑独立配置文件
boss的独立配置文件中删除browseable = no

重新启动一下samba服务

在客户端验证一下
boss访问,可以看到sales目录

用其他用户访问则看不到该目录,比如用sale1登录,如下,没有sales目录

(七)、samba客户端的配置
linux客户端访问samba共享有两种方式
1、 使用smbclient命令
首先确保客户端已经安装了samba-client软件包
查看目标主机共享目录列表的方式:
smbclient –L 目标IP地址或主机名 –U 登录用户名%密码

下面是匿名登录的情况,不用输入密码,直接回车即可,匿名登录看不到sales共享目录,因为这是一个隐藏的共享目录,只有boss帐户可以访问

备注:不同用户使用smbclient浏览的结果可能不同,根据服务器设置而定,比如权限的设置

2、 smbclient支持命令行的共享访问方式
格式:smbclient //目标IP地址或主机名/共享目录名 –U 用户名%密码
例:用sale1访问public目录

成功登录后,支持命令可以用help得到

3、 使用mount命令在客户端挂载共享目录

格式:mount –t cifs //目标IP地址或主机名/共享目录名 挂载点 –o username=用户名
实例:使用sale2账号挂载IP地址为192.168.1.1samba服务器的共享目录public到客户机的/mnt

备注:cifs表示samba所使用的文件系统

(八)、samba的排错思路
1、看错误信息
2、看配置文件,使用配置文件检查工具
3、看日志文件的记录,切换到另一个终端对日志文件进行监控
使用:tail –F /var/log/messages
4、 使用testparm命令检测
5、 使用smbclient命令进行测试,如果客户端不能和服务器连接,会出现不同种类的出错信息,可根据不同的出错信息进行判断错误的原因
u tree connect failed(可能是hosts deny字段的设置有问题)
u Connection refused(可能是smbd进程未开启,确保smbdnmbd进程开启,并使用netstat –a检查netbios使用的139端口是否处于监听状态
u Session setup failed(可能是输入了错误的用户名和密码)
u Your server software is being unfriendly(可能是服务器软件存在问题,配置smbd时使用了错误的参数)

 

samba服务的高级进阶配置的更多相关文章

  1. linux应用之samba服务的安装及配置(centos)

    一.安装方式: 本文通过yum来重新进行Samba服务器的安装与配置. 二.Samba的简介: Samba是一个能让Linux系统应用Microsoft网络通讯协议的软件,而SMB是Server Me ...

  2. Linux下部署Samba服务环境的操作记录

    关于Linux和Windows系统之间的文件传输,很多人选择使用FTP,相对较安全,但是有时还是会出现一些问题,比如上传文件时,文件名莫名出现乱码,文件大小改变等问题.相比较来说,使用Samba作为文 ...

  3. linux应用之apache服务的安装及配置(centos)

    CentOS Apache服务器安装与配置   一.安装Apache程序,一般有三种安装方式:1.直接网络安装:2.下载rpm包,上传至服务器进行安装:3.通过原代码编译安装: yum -y inst ...

  4. 搭建SAMBA服务

    说明:这里是Linux服务综合搭建文章的一部分,本文可以作为单独搭建SABMA服务的参考. 注意:这里所有的标题都是根据主要的文章(Linux基础服务搭建综合)的顺序来做的. 如果需要查看相关软件版本 ...

  5. Samba服务配置简明笔记

    内部服务器之间拷贝数据,用root账号访问,没有做更复杂的设置. 1.用YUM安装samba服务器端及客户端: [root@tenjs05 init.d]# yum install samba sam ...

  6. (转)CentOs上配置samba服务

    前 言 在我们使用 Windows 作为客户机的时候,通常有文件.打印共享的需求.作为Windows 网络功能之一,通常可以在 Windows 客户机之间通过 Windows Network 固有的功 ...

  7. 配置samba服务一例

    问题: 在/data/share目录下建立三个子目录public.training.devel用途如下 public目录用于存放公共数据,如公司的规章制度 training目录用于存放公司的技术培训资 ...

  8. linux samba 服务配置及日志管理

    2012-01-16    安装samba共需3个rpm包   samba-common-3.0.23c-2.i386.rpm  samba-3.0.23c-2.i386.rpm  samba-cli ...

  9. Centos6.5以下Samba服务配置

    一.简介 Samba是一个能让Linux系统应用Microsoft网络通讯协议的软件,而SMB是Server Message Block的缩写,即为服务器消息块 ,SMB主要是作为Microsoft的 ...

随机推荐

  1. C# 同一应用程序域不同线程之间的参数传递方式

    很久没有写博客了,最近的项目不用写代码.今天没事就看看thread之间的参数传递方式,这里主要适用于运行在不同线程的两个方法之间参数传递.直接看代码 1.方法之间直接传递参数 void DemoPar ...

  2. iOS开发-16进制颜色转换

    项目中经常会用到颜色转换,有的是通过十六进制转成数字转颜色,想简单的点直接通过字符串转一下,简单扩展了一下分类UIColor,代码如下: +(UIColor *)colorWithHex:(NSStr ...

  3. 使用Vue.js实现列表选中效果

     实际项目中,我们会遇到很多类似的需求,一个列表,需要点击其中一条高亮显示.熟悉JQuery的同学说这个太简单了.可以给这个选中的element设置一个active的class.配合Css样式,让ac ...

  4. SQL Server 2005 Integration Services (SSIS)数据源之MySQL

    一安装MySQL数据库的ODBC驱动 下载MySQL Connector ODBC 3.51.rar 单击setup按默认安装即可! 如下图所示,在ODBC数据源管理器中看到“MySQL ODBC 3 ...

  5. Android adb你真的会用吗?

    引言 本文基于Android官方文档, 以及个人工作的使用经验, 总结下adb的常用用法, 备忘. 1, adb简介 adb全名Andorid Debug Bridge. 顾名思义, 这是一个Debu ...

  6. Python3 比较两个图片是否类似或相同

    Python代码 #coding:utf8 import os from PIL import Image,ImageDraw,ImageFile import numpy import pytess ...

  7. Spark的动态资源分配

    跑spark程序的时候,公司服务器需要排队等资源,参考一些设置,之前不知道,跑的很慢,懂得设置之后简直直接起飞. 简单粗暴上设置代码: def conf(self): conf = super(Tbt ...

  8. SciPy 安装不上?

    参考:链接:https://www.zhihu.com/question/30188492/answer/150928275来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处 ...

  9. 入门GTD时间管理系统必读

    让我们从什么时间管理开始.什么是时间管理呢?嗯,时间管理就是管理时间.可是,时间怎么能够管理呢? 其实我们管理地并不是时间,而是我们做的事.我们将事情分配到合适的时间段中,在有限的精力中完成它们,得到 ...

  10. 分析jQuery源码时记录的一点感悟

    分析jQuery源码时记录的一点感悟      1.  链式写法      这是jQuery语法上的最大特色,也许该改改POJO里的set方法,和其他的非get方法什么的,可以把多行代码合并,减去每次 ...