Назад | Перейти на главную страницу

Как переименовать пользователя в домене samba4?

Как я могу изменить логин пользователя в домене samba4?

Я пробовал читать справочную страницу по программе samba-tool, но она, похоже, не показывает ничего, что я мог бы использовать.

Предполагая, что мы используем Ubuntu, а Samba 4 настроен как DC (контроллер домена Active Directory), и мы хотим изменить пользователя с именем Old User и войдите olduser. Чтобы просто переименовать логин пользователя, мы можем использовать samba-tool:

test-smb:~# samba-tool user edit olduser

Откроется редактор, показывающий содержимое записи LDAP. Измените атрибуты sAMAccountName и userPrincipalName, Сохранить и выйти. Вы также можете переименовать любой существующий домашний каталог пользователя.

Мы также можем редактировать запись LDAP напрямую, не используя samba-tool но с ldb-tools.

Установить ldb-tools:

apt install ldb-tools

Теперь мы можем использовать 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>

С <ldap-filter> мы можем указать выражение для фильтрации записей, возвращаемых поиском. Например, мы можем использовать sAMAccountName=olduser для фильтрации на основе атрибута имени входа или CN=Old User для фильтрации по атрибуту CN (Common Name):

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) со следующим содержанием:

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

Это изменит атрибуты sAMAccountName и userPrincipalName:

test-smb:~# ldbmodify -H /var/lib/samba/private/sam.ldb rename-login.ldif
Modified 1 records successfully

Переименуйте запись LDAP, переименовав RDN (относительное отличительное имя)

Похоже, переименование записи 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

Это также изменит атрибуты 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

Измените остальные атрибуты

Чтобы также изменить некоторые другие атрибуты, например, givenName, displayName или mail, мы можем использовать:

samba-tool user edit newuser

и редактировать пользователя в интерактивном режиме или использовать другой 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

Измените запись LDAP:

test-smb:~# ldbmodify -H /var/lib/samba/private/sam.ldb rename-other-attrs.ldif
Modified 1 records successfully