假设我们使用 Ubuntu 并且 Samba 4 被配置为 DC(Active Directory 域控制器),并且我们想要使用 nameOld User和 login更改用户olduser。要重命名用户登录名,我们可以使用samba-tool:
test-smb:~# samba-tool user edit olduser
Run Code Online (Sandbox Code Playgroud)
这将打开一个显示 LDAP 条目内容的编辑器。更改属性sAMAccountName和userPrincipalName,保存并退出。您可能还想重命名用户的任何现有主目录。
我们还可以直接编辑 LDAP 条目,而无需使用samba-tool但带有ldb-tools.
安装ldb-tools:
apt install ldb-tools
Run Code Online (Sandbox Code Playgroud)
现在我们可以使用ldb-tools( ldbadd, ldbdel, ldbedit, ldbmodify, ldbrename, ldbsearch) 直接搜索或修改 LDAP 数据库。
找到 Samba LDAP 数据库:
如果您安装了 Ubuntu 打包版本samba,则应在/var/lib/samba/private/sam.ldb.
我们先来看看 LDAP 数据库中的那个用户:
搜索数据库:
我们使用ldbsearch以下语法:
ldbsearch -H <database-file> <ldap-filter>
Run Code Online (Sandbox Code Playgroud)
使用 ,<ldap-filter>我们可以指定一个表达式来过滤搜索返回的条目。例如,我们可以使用sAMAccountName=olduser基于登录名属性CN=Old User进行过滤或基于 CN(通用名称)属性进行过滤:
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
...
Run Code Online (Sandbox Code Playgroud)
更改登录名属性
创建一个rename-login.ldif包含以下内容的文本文件 ( ):
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
Run Code Online (Sandbox Code Playgroud)
这将修改属性sAMAccountName和userPrincipalName:
test-smb:~# ldbmodify -H /var/lib/samba/private/sam.ldb rename-login.ldif
Modified 1 records successfully
Run Code Online (Sandbox Code Playgroud)
通过重命名 RDN(相对专有名称)来重命名 LDAP 条目
看起来无法使用 重命名 LDAP 条目samba-tool,我们必须使用ldb-tools:
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
Run Code Online (Sandbox Code Playgroud)
这也将更改属性cn和name,但不会更改其他一些属性,仍然包含下一次搜索显示的旧用户名:
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
Run Code Online (Sandbox Code Playgroud)
修改其余属性
要更改其他一些属性,例如givenName, displayNameor mail,我们可以使用:
samba-tool user edit newuser
Run Code Online (Sandbox Code Playgroud)
并以交互方式编辑用户或使用另一个ldbmodify如下:
创建一个rename-other-attrs.ldif包含以下内容的文本文件 ( ):
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
Run Code Online (Sandbox Code Playgroud)
修改 LDAP 条目::
test-smb:~# ldbmodify -H /var/lib/samba/private/sam.ldb rename-other-attrs.ldif
Modified 1 records successfully
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5254 次 |
| 最近记录: |