samba passwd 的几种方式

  passdb backend就是用户后台的意思。目前有三种后台:smbpasswd、tdbsam和ldapsam。sam应该是security account manager(安全账户管理)的简写。

  1.smbpasswd

  passdb backend = smbpasswd

  该方式是使用smb自己的工具smbpasswd来给系统用户(真实用户或者虚拟用户)设置一个Samba密码,客户端就用这个密码来访问Samba的资源。smbpasswd文件默认在/etc/samba目录下,不过有时候要手工建立该文件。

  smbpasswd -a 用户名 #添加一个samba用户
  smbpasswd -d 用户名 #禁用一个samba用户
  smbpasswd -e 用户名 #恢复一个samba用户
  smbpasswd -x 用户名 #删除一个samba用户

  2.tdbsam

  passdb backend = tdbsam

  该方式则是使用一个数据库文件来建立用户数据库。数据库文件叫passdb.tdb,默认在/etc/samba目录下。passdb.tdb 用户数据库可以使用smbpasswd –a来建立Samba用户,不过要建立的Samba用户必须先是系统用户。我们也可以使用pdbedit命令来建立Samba账户并由其pdbedit管 理。

  用户的建立可以先用mksmbpasswd建立一个smppasswd文件,然后用pdbedit将文件里的用户导入数据库。

  cat /etc/passwd | mksmbpasswd > /etc/samba/smbpasswd

  pdbedit命令的参数很多,我们列出几个主要的:

  pdbedit -i smbpasswd:/etc/samba/smbpasswd
  pdbedit -a username:新建Samba账户。
  pdbedit -x username:删除Samba账户。
  pdbedit -L:列出Samba用户列表,读取passdb.tdb数据库文件。
  pdbedit -Lv:列出Samba用户列表的详细信息。
  pdbedit -c “[D]” –u username:暂停该Samba用户的账号。
  pdbedit -c “[]” –u username:恢复该Samba用户的账号。

  3.ldapsam

  passdb backend = smbpasswd

  该方式则是基于LDAP的账户管理方式来验证用户。首先要建立LDAP服务,然后设置“passdb backend = ldapsam:ldap://LDAP Server”。

  注:samba3.x的早期版本默认使用tdb库也就是smb.conf默认设定为passdb backend = tdbsam,只需要注释掉该行添加smb passwd file = /etec/samba/smbpasswd即可使用smbpasswd存储加密密钥。samba3.5.6更加规范了passdb backend参数的使用,取消了smb passwd file设定,如果简单注释掉passdb backend参数,密钥文件也不会被存储到smbpasswd。所以很多人说怎么修改smb.conf的配置,smbpasswd文件都无法生成,就算 手工创建,内容也是0字节。 

  这里只能说samba版本升级了,规则也变化了。现在无论是使用tdb数据库存储密钥还是smbpasswd文本存储密钥都要设定相对应的 passdb backend参数。要用传统的文本方式存储只需这样设定passdb backend = smbpasswd:/etc/samba/smbpasswd(后面跟的是绝对路径)>,不要再画蛇添足的写上smb passwd file = /etec/samba/smbpasswd,该参数已经不适用于新版本的samba了。

  注意,这里的用户名必须是linux中存在的用户,可以使用useradd命令在系统中添加一个用户,然后再增加一个对应的samba用户,也 就是一个用户名使用的是两套密码。一个是系统用户密码,另一个密码存储在/etc/samba/smbpasswd文件中的samba密码,这样可以防止 系统用户密钥外泄带来的安全隐患。

  除了上面的措施外,samba还提供了一个更安全的方法,用户名映射功能,这样做的好处是防止系统内的真实用户名暴露,在smb.conf中增 加username map = /etc/samba/smbuser设定,再手工建立该文件。username map参数详解,比如有一个系统用户名为zyhyt.org,同时我们也设定其为samba的登录名,虽然是两套独立的密码,但依然告诉了用户,我系统内 也存在zyhyt.org这个用户。严格的说这也是违背系统安全规则的,不法人士可能会利用该用户名暴力猜解获得系统内帐户权限。samba提供的用户名 映射功能,只需编辑smbuser文>件,格式为:真实的用户名 = 映射出的用户名(随便自定义);zyhyt.org = nas_guest nas_nobody(可以映射出多个用户名,注意中间的空格)。设定完成后,我们只需将nas_guest告诉用户即可,无须担心真实的 zyhyt.org用户名暴露。

posted on 2013-05-21 19:44  jaryWang  阅读(14660)  评论(0编辑  收藏  举报

导航