如何更改 samba 用户 SID?

如何更改 samba 用户 SID?

我正在尝试使用 pdbedit 更改 Samba 4.1.14 中各个用户的 SID

pdbedit --user <username> SID=<SID>

我运行该命令,但没有显示任何消息,SID 也没有改变。

如何在 Samba 4.1.14 中修改用户的 SID?

答案1

Samba 4 域控制器忽略pdbedit设置 SID 的尝试。要更改用户的 SID,您必须使用该ldb-tools包来编辑 SAM LDB直接在 Samba 状态目录中。新版本的 Samba 有一个private/sam.ldb.d子目录,每个命名上下文包含一个 LDB 文件,例如DC=EXAMPLE,DC=COM.ldb;某些版本可能只有该private/sam.ldb文件。

警告:在修改 Samba 域的状态之前,最好先备份它。

确定了感兴趣的文件后,停止 Samba 服务。调用该命令ldbedit编辑该 LDB 中需要调整 SID 的用户名指定的一条记录:

sudo ldbedit -e nano -H /var/lib/samba/private/sam.ldb.d/DC=EXAMPLE,DC=COM.ldb '(samaccountname=someone)'
#               ~~~~                           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                  ~~~~~~~
#          editor of choice                             LDB of interest                        username

警告:您有责任确保您选择的 SID 不被现有或未来的帐户使用。

调整行上的 SID objectSid,保存文件,然后退出文本编辑器。ldbedit将应用更改,您可以重新启动 Samba 服务。

答案2

多年后……没有办法做到这一点!对于当时提到的版本。我试过了!

答案3

pdbedit --user youruser -U NEWSID

答案4

@msmafra 我在 CentOS 8 上使用 Samba 4.11.2 对其进行了测试,并且可以运行。

它也可以在不使用编辑器的情况下在单行上运行,如下所示。-e 参数可以与其他命令一起使用,如 sed、cat 等。

ldbedit -e 'sed -i "s/OLD_SID/NEW_SID/g"' -H /var/lib/samba/private/sam.ldb.d/DC\=EXAMPLE\,DC\=LAB.ldb "(objectSid=OLD_SID)"

相关内容