文档章节

Samba使用smbpasswd实现user安全级别配置

niceguy_php
 niceguy_php
发布于 2013/02/04 16:16
字数 2221
阅读 1278
收藏 4
零、问题需求
经常要在Windows与Linux之间共享文件,Samba是一个很常见的选择:Linux运行Samba服务,Windows访问Linux上共享的文件。在不需要用户访问控制的场景下,Samba服务的安全级别设置为共享(share)就可以了。我的需求是想对Samba服务的访问者进行身份验证,所以选择用户安全级别(user)。user级别要求用户访问samba服务时提供用户名和密码,而且身份验证由 samba server 负责。下面是用smbpasswd方式做的,因我的需求很单一,所以Samba的配置文件也非常简单。这里做个笔记记录一下以备忘。

一、准备Samba软件
1. 安装Samba相关软件包,安装过程略
2. 备份samba配置文件,我们后面要自己从头新建一个配置文件
  1. sudo mv /etc/samba/smb.conf /etc/samba/smb-original.conf
  2. sudo touch /etc/samba/smb.conf

二、工作场所
我们在/etc/samba目录下工作,涉及的文件都在这个目录下。

三、相关文件
用smbpasswd完成user安全级别需要修改或者生成的文件只有下面3个:
/etc/samba/smb.conf        # samba配置文件,大家都懂的
/etc/samba/smbusers        # 用来定义用户名映射,比如可以将root换成administrator、admin等
/etc/samba/smbpasswd       # samba密码存放文件
下面简单描述一下这3个文件。

四、smb.conf 文件
samba自带的smb.conf文件注释很多,例子给的也不少,容易让人觉得这个文件很复杂,其实它的框架很简单,主要包括下面几个小节:
  1. [global]
  2. [homes]
  3. [printers]
  4. [自定义小节]

其中[自定义小节]可以有多个,分别共享不同的目录。
我不关心打印机共享,所以注释掉了[printers]小节。
我也不想让用户登陆samba之后看到自己的“家”目录,所以也注释掉了[homes]小节。因为登陆samba server的用户也同时必须是linux系统的用户,即存在于/etc/passwd文件中的用户,所以每个samba用户会有自己的“家”目录,在/home下,目录名称是使用者自己的帐号。

我们主要关注[global]小节和[自定义小节],[global]小节中我们此次关注的重要参数有以下几个:
  1. workgroup = WORKGROUP
说明:指明共享所在的工作组,可以是NT域名、工作组名

  1. server string = samba server on ubuntu
说明:客户端看到的服务器的描述信息

  1. netbios name = ubuntu_smb
说明:设置Samba Server的NetBIOS名称。如果不填,则默认会使用该服务器的DNS名称的第一部分。netbios name和workgroup名字不要设置成一样了

  1. interfaces = 127.0.0.0/8 eth0
说明:设置Samba Server监听哪些网卡,可以写网卡名,也可以写该网卡的IP地址

  1. hosts allow = 192.168.1. 192.168.163. 192.168.153.
说明:表示允许连接到Samba Server的客户端,多个参数以空格隔开。可以用一个IP表示,也可以用一个网段表示。我这里只允许3个网段里的所有客户端访问samba server。

  1. security = user
说明:设置用户访问Samba Server的验证方式,一共有四种验证方式。 
1. share:用户访问Samba Server不需要提供用户名和口令, 安全性能较低。 
2. user:Samba Server共享目录只能被授权的用户访问,由Samba Server负责检查账号和密码的正确性。账号和密码要在本Samba Server中建立。 
3. server:依靠其他Windows NT/2000或Samba Server来验证用户的账号和密码,是一种代理验证。此种安全模式下,系统管理员可以把所有的Windows用户和口令集中到一个NT系统上,使用Windows NT进行Samba认证, 远程服务器可以自动认证全部用户和口令,如果认证失败,Samba将使用用户级安全模式作为替代的方式。 
4. domain:域安全级别,使用主域控制器(PDC)来完成认证。
我只需要user级别的安全验证就可以了。

  1. username map = /etc/samba/smbusers
说明:用来定义用户名映射,比如可以将root换成administrator、admin等。要事先在smbusers文件中定义好。比如:root = administrator admin,这样就可以用administrator或admin这两个用户来代替root登陆Samba Server,以保护Linux的系统账号root。后面会介绍这个文件。

  1. encrypt passwords = true
说明:是否将认证密码加密。因为现在windows操作系统都是使用加密密码,所以一般要开启此项。

  1. passdb backend = smbpasswd
说明:passdb backend密码验证后端。目前支持的有三种:smbpasswd、tdbsam和ldapsam。其中smbpasswd方式是使用smb自己的工具smbpasswd来给系统用户(真实用户或者虚拟用户)设置一个Samba密码,客户端就用这个密码来访问Samba的资源。smbpasswd文件默认在/etc/samba目录下,不过有时候要手工建立该文件。这里我选用smbpasswd。

  1. smb passwd file =/etc/samba/smbpasswd
说明:用来定义samba用户的密码文件。smbpasswd文件如果默认不存在,要手工新建。后面有介绍这个文件。

  1. log file = /var/log/samba/log.%m
说明:设定 samba server 日志文件的储存位置和文件名(%m代表客户端主机名)。

  1. max open files = 1000
说明:同一客户最多能打开的文件数目

  1. socket options = TCP_NODELAY
说明:用来设置服务器和客户端之间会话的Socket选项,可以优化传输速度。


[自定义小节]小节主要的参数如下:

  1. comment = code
说明:comment是对该共享的描述,可以是任意字符串。

  1. path = /home/songyd/code
说明:path用来指定共享目录的路径。

  1. writable = yes
说明:writable用来指定该共享路径是否可写。这里我们允许写入,以满足文件双向共享。

  1. browseable = yes
说明:browseable用来指定该共享是否可以浏览。

  1. available = yes
说明:available用来指定该共享资源是否可用。

五、smbusers 文件
该文件格式如下:
系统用户名 = 映射的虚拟账号1,映射的虚拟账号2,...
例如:
  1. songyd = admin
songyd用户是samba用户,也是一个Linux系统的账号,为了不让samba用户知道存在songyd这个系统账号,可用这个文件实现songyd账号到虚拟账号admin的一个映射。只需告诉使用者用admin账号登陆即可,这样就保护了songyd这个账号。当然此时用songyd账号登陆samba也是可以的。

六、smbpasswd 文件
该文件格式如下:
  1. name:uid:Lanman Password Hash:NT Password Hash:Account Flags:Last Change Time:
该文件可能默认并不存在,需要手动建立。建立后使用以下命令添加samba账号songyd的密码:
  1. sudo smbpasswd -a songyd
这个命令会在/etc/samba/smbpasswd中写入类似如下内容:
  1. songyd:1000:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:BC53166B76BB840735D6AB4438B4CD5E:[U ]:LCT-4EA2F59B:
这些内容是命令自己添加的,我们不用去管。
【注意】有时发现smbpasswd命令即使执行没有错误,但/etc/samba/smbpasswd中却没有添加任何内容。这是由于smb.conf的passdb backend参数配置不正确,此参数必须设置为smbpasswd,这时smbpasswd -a songyd才会在/etc/samba/smbpasswd文件中添加记录。

七、最后结果
  1. [global]
  2.     workgroup = WORKGROUP
  3.     server string = samba server on ubuntu
  4.     netbios name = ubuntu_smb
  5.     interfaces = 127.0.0.0/8 eth0
  6.     hosts allow = 192.168.1. 192.168.163. 192.168.153.
  7.     security = user
  8.     username map = /etc/samba/smbusers
  9.     encrypt passwords = true
  10.     passdb backend = smbpasswd
  11.     smb passwd file =/etc/samba/smbpasswd
  12.     log file = /var/log/samba/log.%m
  13.     max open files = 1000
  14.     socket options = TCP_NODELAY
  15. ;[homes]
  16. ;   comment = home directories
  17. ;   browseable = no
  18. ;   writable = yes
  19. ;   valid users = %S
  20. ;   create mode = 0664
  21. ;[printers]
  22. ;   printable = Yes
  23. ;   browseable = No
  24. ;   path = /var/spool/samba
  25. [code]
  26.     comment = code
  27.     path = /home/songyd/code
  28.     writable = yes
  29.     browseable = yes
  30.     available = yes

八、重启服务
smb.conf修改完成,smbusers也已添加完毕,smbpasswd文件也已通过命令成功添加了记录,下面重启samba服务即可。Samba 有两个守护进程(nmbd 和 smbd),需要运行它们Samba 才能正常工作。
nmbd 是一个服务器,它可以理解和响应 NetBIOS over IP 命名服务请求,比如 Windows 95/98/ME、Windows NT、Windows 2000、Windows XP 和 LanManager 客户机等 SMB/CIFS客户机产生的请求。它还参与浏览协议,从而构建 Windows 网络邻居视图。
smbd 是服务器守护进程,它向 Windows 客户机提供文件共享和打印服务。这个服务器使用 SMB(或CIFS)协议向客户机提供文件空间和打印服务。
  1. sudo service smbd restart
  2. sudo service nmbd restart

九、软件环境
Linux系统  :ubuntu 11.10
Samba版本:Samba 3.5.11

十、小结
这仅是快速实现user安全级别的samba共享的一个例子,介绍得很粗浅,省略了很多未涉及内容。网上介绍samba配置的文章很多,若有更复杂需求,请大家google之,baidu之:)

本文转载自:http://blog.chinaunix.net/uid-20537084-id-2977850.html

niceguy_php
粉丝 2
博文 34
码字总数 8351
作品 0
成都
程序员
私信 提问
linux系统samba服务器安装及安全设置

Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。 SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网...

zhangdiandong
2014/07/02
0
0
samba配置(centOS)

一。包安装: yum -y install samba samba-client samba-common 二。配置: 1).主配置文件:/etc/samba/smb.conf 2).密码存放地(文件需要自己创建):/etc/samba/smbpasswd ==>smb passw...

wbf961127
2017/11/12
0
0
第十一章 网络文件共享服务之samba

Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。 在此之前我们已经了解了NFS和FTP,NFS与samba一样,也是在网络中实现文件共享的一种实现,但不幸的是,其...

忘情OK
2018/06/28
0
0
Linux Samba Server的配置方法详细解析

Host allow = 192.168.1. 192.168.2. 127. ->>>>>此项对安全性非常重要.它严格限制了可访问Samba 的范围.默认是允许所有IP访问.. Printcap name = /etc/printcap >>>>>>>>>>>>>>设置打印机配......

范堡
2009/05/07
1K
0
Linux系统下Samba Server的配置文件解析

阅读提示:在Linux下可以通过Samba客户端访问局域网内的Windows主机,也可以通过Samba服务器给Windows主机提供文件、打印机等服务。Samba 使用/etc/samba/smb.conf 作为他的的主配置文件,直...

JavaGG
2009/05/23
317
0

没有更多内容

加载失败,请刷新页面

加载更多

黑客之道-40本书籍助你快速入门黑客技术免费下载

场景 黑客是一个中文词语,皆源自英文hacker,随着灰鸽子的出现,灰鸽子成为了很多假借黑客名义控制他人电脑的黑客技术,于是出现了“骇客”与"黑客"分家。2012年电影频道节目中心出品的电影...

badaoliumang
昨天
5
0
很遗憾,没有一篇文章能讲清楚线程的生命周期!

(手机横屏看源码更方便) 注:java源码分析部分如无特殊说明均基于 java8 版本。 简介 大家都知道线程是有生命周期,但是彤哥可以认真负责地告诉你网上几乎没有一篇文章讲得是完全正确的。 ...

彤哥读源码
昨天
6
0
jquery--DOM操作基础

本文转载于:专业的前端网站➭jquery--DOM操作基础 元素的访问 元素属性操作 获取:attr(name);$("#my").attr("src"); 设置:attr(name,value);$("#myImg").attr("src","images/1.jpg"); ......

前端老手
昨天
4
0
Django的ChoiceField和MultipleChoiceField错误提示,选择一个有效的选项

在表单验证时提示错误:选择一个有效的选项 例如有这样一个表单: class ProductForm(Form): category = fields.MultipleChoiceField( widget=widgets.SelectMultiple(), ...

编程老陆
昨天
7
0
Vue核心概念及特性 (一)

Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。 > 特点: 易用,灵活,高效,渐进式框架。 > 可以随意组合需要用到的模块 vue + components + vue-router + vuex + v...

前端优选
昨天
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部