Press "Enter" to skip to content

Samba用户管理

samba有三种用户密码验证方式:smbpasswd、tdbsam和ldapsam。

smbpasswd是使用一个smbpasswd文件来存储用户信息(通常位于/etc/samba/smbpasswd,文件格式类似于/etc/passwd),使用smbpasswd命令来管理用户,要添加/管理的用户必须先是系统用户。
在旧版本的Samba中,如果指定了passdb backend = smbpasswd,那么还需要指定smb passwd file =/etc/samba/smbpasswd。

tdbsam是使用一个.db的文件来存储用户信息,使用pdbedit命令来管理用户,要添加/管理的用户必须先是系统用户。

新版Samba的密码验证方式已使用tdbsam取代smbpasswd,但如果要继续延用旧版smbpasswd也是可以的。新版的tdbsam需要用pdbedit命令来管理帐号密码。

$ grep backend /etc/samba/smb.conf 
   passdb backend = tdbsam

使用新版tdbsam管理帐号

pdbedit -a username    #新建Samba账户
pdbedit -x username    #删除Samba账户
pdbedit -v username    #显示账户详细信息
pdbedit -L             #列出Samba用户列表,读取passdb.tdb数据库文件
pdbedit -Lv            #列出Samba用户列表详细信息

使用旧版smbpasswd管理帐号

$ vim /etc/samba/smb.conf
 passdb backend = smbpasswd #将tdbsam改为smbpasswd
 encrypt passwords = yes
 smb passwd file = /etc/samba/smbpasswd

重启服务
$ service smb restart
$ service nmb restart

将旧版smbpasswd导入tdbsam

$ vim /etc/samba/smb.conf
 passdb backend = tdbsam smbpasswd #在后面增加smbpasswd

$ service smb restart
$ service nmb restart

将smbpasswd导入
$ pdbedit -i smbpasswd -e tdbsam

检查帐号是否导入
$ pdbedit -L

$ service smb restart
$ service nmb restart

注意:在Samba 3.0.7以后的版本,nmb不会随着smb启动,nmb服务跟NetBIOS Name名称解析有关,没有启动会造成Windows端找不到Linux主机。

一些资料
Some commands to convert samba backend password-databases.

If you use “passdb backend = smbpasswd” in your smb.conf you must convert your system-user accounts to smbpasswd:

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

If you use “passdb backend = tdbsam” in your smb.conf you must convert your system-user accounts to passdb.tdb:

pdbedit -i smbpasswd:/etc/samba/smbpasswd -e tdbsam:/etc/samba/passdb.tdb

And ensure the global section of smb.conf has such an entry:

passdb backend = tdbsam
Leave a Reply

Your email address will not be published. Required fields are marked *