无法使用 tdb 后端修改 samba 中的用户条目

无法使用 tdb 后端修改 samba 中的用户条目

我有一个带 samba 的 debian 服务器。我无法再管理用户帐户。我无法添加、修改或删除它们。

这是 Debian wheezy,带有 samba 3.6.6。没有 ldap,数据库后端是 tdb。我通常使用 smbpasswd 管理用户,但它不再起作用。

当我尝试创建新用户时:

smbpasswd -a blabla
New SMB password: ****
Retype new SMB password: ****
Failed to add entry for user blabla.

尝试使用 pdbedit 或 smbpasswd 删除用户也不起作用,并返回相同的错误:

# pdbedit -L olduser
olduser:1314:OldName

# smbpasswd -x olduser
Failed to delete entry for user olduser.

我尝试使用 tdbtool

# tdbtool /var/lib/samba/passdb.tdb check
Database integrity is OK and has 570 records.

我检查了键的长度,我编写了一个小型 perl 脚本,检查了 tdbtool 键的所有输出,以查看某个条目是否有与应有的键不同的键,但我没有发现任何错误:

key 9 bytes: USER_old

我陷入困境,如果能得到任何提示我将非常感激,谢谢。

答案1

最后我在 samba 邮件列表中得到了答案:

https://lists.samba.org/archive/samba/2015-March/189740.html

如果 samba 在 PDC 模式下运行并且用户不在 /etc/passwd 中,就会发生这种情况。

我看到我试图删除的用户不在密码中,所以我添加了它,然后我再次用它删除了它,smbpasswd -x并且我也从中删除了它passwd

问题解决了。

答案2

在这种情况下我使用

pdbedit -x user_name

答案3

我还无法使用 tdbsam 作为后端从 samba 中删除用户。使用“sudo pdbedit -L”显示数据库中的所有用户。我使用的是 lubuntu 18.04,因此您可能需要查找 passdb.tdb 文件的位置。

以下步骤显示了如何手动删除用户并交替重新输入用户,我不得不这样做,因为我无法更改用户的密码。在下面的示例中,有问题的用户是“xxxx”。

打开终端窗口并准备运行一系列命令/工具,如 su sudo -s cd tdbdump /var/lib/samba/private/passdb.tdb > xx.txt

使用 leafpad、gedit 或您最喜欢的编辑器打开 xx.txt 并查找“xxxx”的所有条目(根据您的情况替换用户)。您将要查找的是引用您的用户的所有记录的 Key() 条目。停止 Samba:service nmbd stop service smbd stop 然后:tdbtool #您将获得“tdb>”提示

在 tdbtool 中准备删除用户时使用的命令:check repack

从上面的“tdbdump”结果中,我发现了“xxxx”的以下条目,但它们通常不会彼此相邻:{key(13) =“RID_00000540\00”data(5) =“xxxx\00”} .. .. {key(10) =“USER_xxxx\00”}

要删除用户,在“tdbtool”中,使用“delete {key}”命令,如下所示:delete USER_xxxx delete RID_00000584\00

完成后,重启samba服务 smbd start 服务 nmbd start

现在应该从 samba 中删除该用户,您可能还必须使用“userdel”从 linux 中删除该用户

相关内容