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