¿Cómo cambiar el nombre de un usuario en el dominio samba4?

¿Cómo cambiar el nombre de un usuario en el dominio samba4?

¿Cómo puedo cambiar el inicio de sesión de un usuario en un dominio basado en samba4?

Intenté leer la página de manual de la herramienta samba, pero no parece mostrar nada que pueda usar.

Respuesta1

Suponiendo que usamos Ubuntu y Samba 4 está configurado como DC (Controlador de dominio de Active Directory) y queremos cambiar el usuario con nombre Old Usere inicio de sesión olduser. Para simplemente cambiar el nombre de inicio de sesión de un usuario, podemos usar samba-tool:

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

Esto abrirá un editor que muestra el contenido de la entrada LDAP. Cambie los atributos sAMAccountNamey userPrincipalName, guarde y salga. Es posible que también desee cambiar el nombre de cualquier directorio de inicio existente del usuario.

También podemos editar la entrada LDAP directamente sin usar samba-toolpero con el archivo ldb-tools.

Instalar ldb-tools:

apt install ldb-tools

Ahora podemos usar ldb-tools( ldbadd, ldbdel, ldbedit, ldbmodify, ldbrename, ldbsearch) para buscar o modificar la base de datos LDAP directamente.

Localice la base de datos LDAP de Samba:

Si instaló una versión empaquetada de Ubuntu samba, este archivo debe encontrarse en /var/lib/samba/private/sam.ldb.

Primero echemos un vistazo a ese usuario en la base de datos LDAP:

Buscar en la base de datos:

Usamos ldbsearchpara eso con la siguiente sintaxis:

ldbsearch -H <database-file> <ldap-filter>

Con <ldap-filter>podemos especificar una expresión para filtrar las entradas devueltas por la búsqueda. Podemos, por ejemplo, utilizar sAMAccountName=olduserpara filtrar según el atributo de nombre de inicio de sesión o CN=Old Userpara filtrar según el atributo CN (nombre común):

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

...

Cambiar los atributos del nombre de inicio de sesión

Cree un archivo de texto ( rename-login.ldif) con el siguiente contenido:

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]

Esto modificará los atributos sAMAccountNamey userPrincipalName:

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

Cambie el nombre de la entrada LDAP cambiando el nombre de RDN (nombre distinguido relativo)

Parece que no es posible cambiar el nombre de una entrada LDAP usando samba-tooly tenemos que usar 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

Esto también cambiará los atributos cny name, pero no algunos otros atributos, que aún contienen el nombre de usuario anterior como se muestra en la siguiente búsqueda:

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

Modificar los atributos restantes

Para cambiar también algunos otros atributos, como por ejemplo o givenName, podemos usar:displayNamemail

samba-tool user edit newuser

y editar el usuario de forma interactiva o utilizar otro ldbmodifyde la siguiente manera:

Cree un archivo de texto ( rename-other-attrs.ldif) con el siguiente contenido:

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]

Modifique la entrada LDAP::

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

Respuesta2

También se puede probar lo obvio:

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

Estoy publicando esto porque con Active Directory hay muchas definiciones de "inicio de sesión" (es decir, se puede usar userPrincipalName, y también hay otras opciones, por ejemplo, la aplicación en la que estoy trabajando permite a los usuarios iniciar sesión solo con su CN)

información relacionada