为什么 Samba 没有使用“samba-tool”添加新用户?

为什么 Samba 没有使用“samba-tool”添加新用户?

我正在尝试在运行服务器 14.04 LTS 的 Dell Poweredge 860 上配置 Samba 共享。Samba 已卸载(当我选择它时),因此我只需对其进行配置。我正在尝试将其连接到我的 Windows 计算机。

我的配置文件(如下所列)似乎有效。我没有收到任何错误。这是我在网上找到的教程的修改版本。

[global]
        workgroup = HOME
        server string = Samba Ubuntu Server
        map to guest = Bad User
        log file = /var/log/samba/log.%m
        max log size = 50
        socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
        local master = No
        dns proxy = No
        idmap config * : backend = tdb

[Queue]
        comment = "A small folder to move files from/to the server. For use by server admin."
        path = /serv/samba/queue
        valid users = penguin
        read only = No
        create mask = 0777
        directory mask = 0777

一切都很好。(我应该指出,我penguin也有一个名为的帐户,但我希望所有用户都使用 进行配置,samba-tool因为penguin这是该帐户上唯一的用户帐户,并且用户数量将比现在更多)。

penguin@Ubuntu-Server-1:~/serv/samba$ sudo samba-tool user add penguin
New Password:
Retype Password:
ERROR(<type 'exceptions.ValueError'>): Failed to add user 'penguin':  - unable to parse dn string
  File "/usr/lib/python2.7/dist-packages/samba/netcmd/user.py", line 176, in run
    uid=uid, uidnumber=uid_number, gidnumber=gid_number, gecos=gecos, loginshell=login_shell)
  File "/usr/lib/python2.7/dist-packages/samba/samdb.py", line 343, in newuser
    dnsdomain = ldb.Dn(self, self.domain_dn()).canonical_str().replace("/", "")

我也尝试使用系统上没有的其他用户名。但不起作用。

我甚至无法完成一件sudo samba-tool user list没有错误的事情!

ERROR(ldb): uncaught exception - ldb_search: invalid basedn '(null)'
  File "/usr/lib/python2.7/dist-packages/samba/netcmd/__init__.py", line 175, in _run
    return self.run(*args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/samba/netcmd/user.py", line 271, in run
    attrs=["samaccountname"])

我究竟做错了什么?

答案1

只需在终端中输入以下内容:

smbpasswd -a penguin

并且你添加的用户需要在Ubuntu系统中添加,就像一个新用户一样。

可以使用

sudo useradd penguin

或者

sudo adduser penguin

答案2

据我所知,它samba-tool仅用于 Active Directory (AC) 配置。因此,如果您尚未将 Samba 设置为 AC 服务器,samba-tool user add它将无法工作。

您应该问自己,您的网络中是否需要 Active Directory 服务器,或者是否只需要一个仅具有自己的用户的简单 Samba 服务器。

如果你需要 AC 服务器,你应该遵循 Samba 项目本身提供的指南(https://wiki.samba.org/index.php/Samba_AD_DC_HOWTO)。但请注意,此文档并不直接适用于 ubuntu,您需要了解依赖于它的内容(即 DNS、Kerberos、LDAP)。

如果您只需要一个简单的服务器,该服务器具有一些用于自身目的的帐户,并提供对一些共享文件夹的访问权限,则应遵循 samba3 的指南。Samba4 与 samba3 的这些设置兼容,尽管您需要smbpasswd在 samba 中创建用户。“通用 Samba 指南”Ubuntu 服务器文档应该会给你提供你需要的所有信息。

答案3

我担心这个“错误”可能被错误分类,因为它以多种不同的形式出现。我刚刚发现了一份可追溯到 2014 年的错误报告,报告的内容与我遇到的情况完全相同:

samba-tool 用户列表...反复失败。但是,涉及 samba-tool 的所有其他命令也都失败,除了:samba-tool -V(正确报告版本号)

以下是冰山一角(或者我应该说是“一角”):

acel:/mnt/nsd#samba-tool 用户列表遇到未知参数:“acl xattr update mtime”忽略未知参数“acl xattr update mtime”错误(ldb):未捕获的异常 - ldb_search:无效的 basedn'(null)'文件“/usr/lib/python2.7/dist-packages/samba/netcmd/在里面.py”, 第 175 行, 在 _run 中返回 self.run(*args, **kwargs) 文件“/usr/lib/python2.7/dist-packages/samba/netcmd/user.py”, 第 292 行, 在运行中 attrs=[“samaccountname”]) acel:/mnt/nsd# samba-tool 用户列表 ERROR(ldb): 未捕获异常 - ldb_search: 无效 basedn'(null)'
文件“/usr/lib/python2.7/dist-packages/samba/netcmd/在里面.py”,第 175 行,在 _run 中返回 self.run(*args, **kwargs) 文件“/usr/lib/python2.7/dist-packages/samba/netcmd/user.py”,第 292 行,在运行 attrs=[“samaccountname”]) acel:/mnt/nsd# which ldb ldb:未找到命令。

问题是什么?在一个系统上遇到这个问题后,我在其他三个独立系统(都是 Ubuntu)上检查了 samba-tool,发现 samba-tool 也坏了。我在错误报告中发现了一些对类似表现的孤立引用,有些可以追溯到 4-6 年前。我还发现了几份关于该错误已被“修复”的报告……(这个变体尚未修复)。

我只想通过删除一个孤立项来确保 Samba 用户/密码数据库干净,但我做不到。显然,如果 samba-tool 不起作用(在我的例子中,我有 4 台服务器运行 Samba,但它在任何一台服务器上都不起作用),它需要修复。

我唯一能提供的线索是:我读过的一篇参考资料提到 Samba 中的密码同步功能可能是导致此问题的原因。当 Samba 遇到一个孤立的 Samba 用户 ID 时,我就遇到了这个问题,这个用户 ID 是我通过重命名 /etc/passwd 文件中的原始用户而创建的。我当时只是想使用 samba-tool 来删除这个孤立的用户。但我想,当 Samba 尝试将其用户数据库与系统同步时,可能会发现原始用户丢失,从而造成一些损害。(?)

这不是答案。这只是一个暗示,表明该错误可能仍然存在,而检查您是否受到影响的最佳方法是运行 samba-tool 简单功能,看看它是否正常工作:

例如“samba-tool user list”或“samba-tool dbcheck”。

我的所有(1 V4.7 和 3 V4.3)都坏了。(希望这有帮助。)

相关内容