Como renomear um usuário no domínio samba4?

Como renomear um usuário no domínio samba4?

Como posso alterar o login de um usuário em um domínio baseado em samba4?

Eu tentei ler a página de manual da ferramenta samba, mas ela não parece mostrar nada que eu possa usar.

Responder1

Supondo que usamos o Ubuntu e o Samba 4 está configurado como DC (Active Directory Domain Controller) e queremos alterar o usuário com nome Old Usere login olduser. Para apenas renomear o nome de login de um usuário, podemos usar samba-tool:

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

Isto abrirá um editor que mostra o conteúdo da entrada LDAP. Altere os atributos sAMAccountNamee userPrincipalName, salve e saia. Você também pode renomear qualquer diretório inicial existente do usuário.

Também podemos editar a entrada LDAP diretamente sem usar o samba-toolarquivo ldb-tools.

Instalar ldb-tools:

apt install ldb-tools

Agora podemos usar ldb-tools( ldbadd, ldbdel, ldbedit, ldbmodify, ldbrename, ldbsearch) para pesquisar ou modificar o banco de dados LDAP diretamente.

Localize o banco de dados LDAP do Samba:

Se você instalou uma versão empacotada do Ubuntu samba, esse arquivo deve ser encontrado em /var/lib/samba/private/sam.ldb.

Vamos primeiro dar uma olhada nesse usuário no banco de dados LDAP:

Pesquise no banco de dados:

Usamos ldbsearchpara isso a seguinte sintaxe:

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

Com <ldap-filter>podemos especificar uma expressão para filtrar as entradas retornadas pela pesquisa. Podemos, por exemplo, usar sAMAccountName=olduserpara filtrar com base no atributo de nome de login ou CN=Old Userpara filtrar com base no atributo CN (Nome Comum):

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

...

Alterar os atributos do nome de login

Crie um arquivo de texto ( rename-login.ldif) com o seguinte conteúdo:

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]

Isso modificará os atributos sAMAccountNamee userPrincipalName:

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

Renomeie a entrada LDAP renomeando o RDN (Relative Distinguished Name)

Parece que não é possível renomear uma entrada LDAP usando samba-toole temos 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

Isso também alterará os atributos cnand name, mas não alguns outros atributos, ainda contendo o nome de usuário antigo, conforme mostrado na próxima pesquisa:

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

Modifique os atributos restantes

Para alterar também alguns outros atributos, como por exemplo givenName, displayNameou mail, podemos usar:

samba-tool user edit newuser

e edite o usuário interativamente ou use outro ldbmodifyda seguinte maneira:

Crie um arquivo de texto ( rename-other-attrs.ldif) com o seguinte conteúdo:

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 a entrada LDAP::

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

Responder2

Também se pode tentar o óbvio:

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

Estou postando isso porque com o Active Directory existem muitas definições de "login" (ou seja, pode-se usar userPrincipalName e há outras opções também, por exemplo, o aplicativo em que estou trabalhando permite que os usuários façam login apenas com seu CN)

informação relacionada