首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在samba4域中重命名用户?

如何在samba4域中重命名用户?
EN

Server Fault用户
提问于 2018-08-31 06:46:35
回答 2查看 7.7K关注 0票数 4

如何在基于samba4的域中更改用户的登录?

我试过阅读samba工具手册页,但它似乎没有显示我可以使用的任何东西。

EN

回答 2

Server Fault用户

回答已采纳

发布于 2018-09-03 11:59:31

假设我们使用Ubuntu和Samba 4,则将其配置为DC (),并希望更改名为Old User和登录olduser的用户。要重命名用户登录名,我们可以使用samba-tool

代码语言:javascript
运行
复制
test-smb:~# samba-tool user edit olduser

这将打开一个编辑器,显示LDAP条目的内容。更改属性sAMAccountNameuserPrincipalName,保存和退出。您还可能希望重命名用户的任何现有主目录。

我们还可以直接编辑LDAP条目,而无需使用samba-tool,而是使用ldb-tools

安装ldb-tools:

代码语言:javascript
运行
复制
apt install ldb-tools

现在我们可以使用ldb-tools (ldbaddldbdelldbeditldbmodifyldbrenameldbsearch)直接搜索或修改LDAP数据库。

定位Samba数据库:

如果您安装了Ubuntu打包版本的samba,这个文件应该可以在/var/lib/samba/private/sam.ldb上找到。

让我们首先看看LDAP数据库中的用户:

搜索数据库:

为此,我们使用ldbsearch,语法如下:

代码语言:javascript
运行
复制
ldbsearch -H <database-file> <ldap-filter>

使用<ldap-filter>,我们可以指定一个表达式来过滤搜索返回的条目。例如,我们可以使用sAMAccountName=olduser根据登录名属性进行筛选,或者使用CN=Old User根据CN (公共名称)属性进行筛选:

代码语言:javascript
运行
复制
test-smb:~# ldbsearch -H /var/lib/samba/private/sam.ldb 'CN=Old User'
# record 1
dn: CN=Old User,CN=Users,DC=test-smb,DC=example,DC=com
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: user
cn: Old User
sn: User
givenName: Old
instanceType: 4
whenCreated: 20180904091809.0Z
whenChanged: 20180904091809.0Z
displayName: Old User
uSNCreated: 3841
name: Old User
objectGUID: 038979ea-107d-4c97-85bf-76d1f2326608
badPwdCount: 0
codePage: 0
countryCode: 0
badPasswordTime: 0
lastLogoff: 0
lastLogon: 0
primaryGroupID: 513
objectSid: S-1-5-21-3075026989-1808589244-366107480-1105
accountExpires: 9223372036854775807
logonCount: 0
sAMAccountName: olduser
sAMAccountType: 805306368
userPrincipalName: olduser@test-smb.example.com
objectCategory: CN=Person,CN=Schema,CN=Configuration,DC=test-smb,DC=phys,DC=et
 hz,DC=ch
mail: olduser@test-smb.example.com
loginShell: /bin/bash
pwdLastSet: 131805262894707270
userAccountControl: 512
uSNChanged: 3844
distinguishedName: CN=Old User,CN=Users,DC=test-smb,DC=example,DC=com

...

更改登录名属性

创建一个文本文件(rename-login.ldif),其内容如下:

代码语言:javascript
运行
复制
dn: CN=Old User,CN=Users,DC=test-smb,DC=phys,DC=ethz,DC=ch
changetype: modify
replace: sAMAccountName
sAMAccountName: newuser
-
replace: userPrincipalName
userPrincipalName: newuser@test-smb.phys.ethz.ch

这将修改属性sAMAccountNameuserPrincipalName

代码语言:javascript
运行
复制
test-smb:~# ldbmodify -H /var/lib/samba/private/sam.ldb rename-login.ldif
Modified 1 records successfully

通过重命名RDN (相对区别名称)

来重命名LDAP条目

看起来,使用samba-tool重命名LDAP条目是不可能的,我们必须使用ldb-tools

代码语言:javascript
运行
复制
test-smb:~# ldbrename -H /var/lib/samba/private/sam.ldb 'CN=Old User,CN=Users,DC=test-smb,DC=example,DC=com' 'CN=New User,CN=Users,DC=test-smb,DC=example,DC=com'
Renamed 1 record

这还将更改属性cnname,但不会更改其他一些属性,这些属性仍然包含旧用户名,如下一次搜索所示:

代码语言:javascript
运行
复制
test-smb:~# ldbsearch -H /var/lib/samba/private/sam.ldb 'CN=New User'
# record 1
dn: CN=New User,CN=Users,DC=test-smb,DC=example,DC=com
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: user
sn: User
givenName: Old
instanceType: 4
whenCreated: 20180904091809.0Z
displayName: Old User
uSNCreated: 3841
objectGUID: 038979ea-107d-4c97-85bf-76d1f2326608
badPwdCount: 0
codePage: 0
countryCode: 0
badPasswordTime: 0
lastLogoff: 0
primaryGroupID: 513
objectSid: S-1-5-21-3075026989-1808589244-366107480-1105
accountExpires: 9223372036854775807
sAMAccountType: 805306368
objectCategory: CN=Person,CN=Schema,CN=Configuration,DC=test-smb,DC=phys,DC=et
 hz,DC=ch
mail: olduser@test-smb.example.com
loginShell: /bin/bash
pwdLastSet: 131805262894707270
userAccountControl: 512
lastLogonTimestamp: 131805264616461980
sAMAccountName: newuser
userPrincipalName: newuser@test-smb.example.com
lastLogon: 131805271152497360
logonCount: 12
cn: New User
name: New User
whenChanged: 20180904100228.0Z
uSNChanged: 3847
distinguishedName: CN=New User,CN=Users,DC=test-smb,DC=example,DC=com

修改其余属性

要更改其他一些属性,例如givenNamedisplayNamemail,我们可以使用:

代码语言:javascript
运行
复制
samba-tool user edit newuser

并交互地编辑用户或使用另一个ldbmodify,如下所示:

创建一个文本文件(rename-other-attrs.ldif),其内容如下:

代码语言:javascript
运行
复制
dn: CN=New User,CN=Users,DC=test-smb,DC=phys,DC=ethz,DC=ch
changetype: modify
replace: givenName
givenName: New
-
replace: displayName
displayName: New User
-
replace: mail
mail: newuser@test-smb.example.com

修改LDAP条目::

代码语言:javascript
运行
复制
test-smb:~# ldbmodify -H /var/lib/samba/private/sam.ldb rename-other-attrs.ldif
Modified 1 records successfully
票数 7
EN

Server Fault用户

发布于 2023-05-31 14:43:35

人们也可以尝试显而易见的:

代码语言:javascript
运行
复制
/ # samba-tool user rename  --help
Usage: samba-tool user rename <username> [options]

Rename a user and related attributes.

This command allows to set the user's name related attributes. The user's
CN will be renamed automatically.
The user's new CN will be made up by combining the given-name, initials
and surname. A dot ('.') will be appended to the initials automatically
if required.
Use the --force-new-cn option to specify the new CN manually and the
--reset-cn option to reset this change.

Use an empty attribute value to remove the specified attribute.

The username specified on the command is the sAMAccountName.

The command may be run locally from the root userid or another authorized
userid.

The -H or --URL= option can be used to execute the command against a remote
server.

Example1:
samba-tool user rename johndoe --surname='Bloggs'

Example1 shows how to change the surname of a user 'johndoe' to 'Bloggs' on
the local server. The user's CN will be renamed automatically, based on
the given name, initials and surname.

Example2:
samba-tool user rename johndoe --force-new-cn='John Bloggs (Sales)' \
    --surname=Bloggs -H ldap://samba.samdom.example.com -U administrator

Example2 shows how to rename the CN of a user 'johndoe' to 'John Bloggs
(Sales)'.
Additionally the surname ('sn' attribute) is set to 'Bloggs'.
The -H parameter is used to specify the remote target server.

我之所以发布这篇文章,是因为在Active Directory中,有很多关于“登录”的定义(例如,可以使用userPrincipalName,还有其他选项,例如,我正在开发的应用程序允许用户只使用他们的CN登录)

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/928830

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档