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