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

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

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

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

решение1

Предположим, что мы используем 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: [email protected]
objectCategory: CN=Person,CN=Schema,CN=Configuration,DC=test-smb,DC=phys,DC=et
 hz,DC=ch
mail: [email protected]
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: [email protected]

Это изменит атрибуты 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: [email protected]
loginShell: /bin/bash
pwdLastSet: 131805262894707270
userAccountControl: 512
lastLogonTimestamp: 131805264616461980
sAMAccountName: newuser
userPrincipalName: [email protected]
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: [email protected]

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

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

решение2

Можно также попробовать очевидный вариант:

/ # 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).

Связанный контент