如何将 smbpasswd 文件导入不同的 samba 服务器

如何将 smbpasswd 文件导入不同的 samba 服务器

我正在尝试导出我的 samba 用户,然后导入他们(最终目标是在机器之间执行此操作,但现在我只想在我新安装的服务器上执行一个测试用户)。我创建了用户“testuser”并对其执行了 smbpasswd -a,该用户可以正常工作(我可以使用 samba 访问其主目录)。

pdbedit -e smbpasswd:test.export

给我文件:

testuser:1:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:7B90AA08B1243A36E6BD19232DD334F7:[U          ]:LCT-62BAFB03:

在我看来,它肯定包含密码哈希。然后我删除 samba 用户 ( smbpasswd -x testuser),并尝试导入:

pdbedit -i smbpasswd:test.export

它没有输出,也没有导入用户。

pdbedit -i smbpasswd:test.export -d10

给出

export_database: username="(NULL)"
startsmbfilepwent_internal: opening file test.export
getsmbfilepwent: LM password for user testuser invalidated
getsmbfilepwent: returning passwd entry for user testuser, uid 1
Finding user testuser
Trying _Get_Pwnam(), username as lowercase is testuser
Get_Pwnam_internals did find user [testuser]!
pdb_set_username: setting username testuser, was
pdb_set_full_name: setting full name , was
pdb_set_domain: setting domain BRAIN3, was
pdb_set_profile_path: setting profile path \\BRAIN3\testuser\profile, was
pdb_set_homedir: setting home dir \\BRAIN3\testuser, was
pdb_set_dir_drive: setting dir drive , was NULL
pdb_set_logon_script: setting logon script , was
pdb_set_user_sid: setting user sid S-1-5-21-1587438053-288431040-2563487571-3000
pdb_set_user_sid_from_rid:
        setting user sid S-1-5-21-1587438053-288431040-2563487571-3000 from rid 3000
getsmbfilepwent: end of file reached.
endsmbfilepwent_internal: closed password file.
Processing account testuser
smbpasswd_getsampwrid: search by sid: S-1-5-21-1587438053-288431040-2563487571-3000
startsmbfilepwent_internal: opening file test.export
getsmbfilepwent: LM password for user testuser invalidated
getsmbfilepwent: returning passwd entry for user testuser, uid 1
getsmbfilepwent: end of file reached.
endsmbfilepwent_internal: closed password file.
getsampwsid failed: NT_STATUS_UNSUCCESSFUL

有人知道我做错了什么吗?我不认为导出用户名/密码哈希然后导入它们是一个很大的要求,但我似乎无法用这些工具取得任何进展。

答案1

好的,我已经弄清楚了发生了什么,并采取了解决措施,但我一点也不明白。

当我这样做时,pdbedit -e输出文件是一个有效的 smbpasswd 文件,但 UID 值不是用户的 unix UID(例如,在我上面的测试中,unix UID 是 1000,输出中的 UID 是 1)。因此,当尝试导入时,无法pdbedit -i理解事物。

为了解决这个问题,我简单地执行了pdbedit -L -w,它给出了相同的输出,但具有正确的 unix UID。这个输出文件在pdbedit -i新系统上被顺利地接收,并且一切正常。

我不明白为什么pdbedit -e输出不是我需要的,也不知道它产生的值是什么。我很高兴知道这里发生了什么,以供将来参考。

相关内容