5 votes

Comment renommer un utilisateur dans un domaine samba4 ?

Comment puis-je changer le login d'un utilisateur dans un domaine basé sur samba4 ?

J'ai essayé de lire la page de manuel de samba-tool, mais elle ne semble pas montrer quoi que ce soit que je puisse utiliser.

7voto

rda Points 1887

En supposant que nous utilisons Ubuntu et Samba 4 est configuré comme un DC (Active Directory Domain Controller) et nous voulons changer l'utilisateur avec le nom Old User et connexion olduser . Pour simplement renommer le nom de connexion d'un utilisateur, nous pouvons utiliser samba-tool :

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

Cela ouvrira un éditeur montrant le contenu de l'entrée LDAP. Modifier les attributs sAMAccountName et userPrincipalName , sauvegarder et quitter. Vous pouvez également renommer tout répertoire personnel existant de l'utilisateur.

Nous pouvons également modifier l'entrée LDAP directement sans utiliser la fonction samba-tool mais avec le ldb-tools .

Installer ldb-tools :

apt install ldb-tools

Nous pouvons maintenant utiliser le ldb-tools ( ldbadd , ldbdel , ldbedit , ldbmodify , ldbrename , ldbsearch ) pour rechercher ou modifier directement la base de données LDAP.

Localisez la base de données LDAP de Samba :

Si vous avez installé une version packagée Ubuntu de samba ce fichier devrait se trouver à /var/lib/samba/private/sam.ldb .

Regardons d'abord cet utilisateur dans la base de données LDAP :

Recherchez dans la base de données :

Nous utilisons ldbsearch pour cela avec la syntaxe suivante :

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

Avec le <ldap-filter> nous pouvons spécifier une expression pour filtrer les entrées retournées par la recherche. Nous pouvons par exemple utiliser sAMAccountName=olduser pour filtrer sur la base de l'attribut nom de connexion ou CN=Old User pour filtrer sur la base de l'attribut 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

...

Modifier les attributs du nom de connexion

Créez un fichier texte ( rename-login.ldif ) avec le contenu suivant :

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

Cela modifiera les attributs sAMAccountName et userPrincipalName :

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

Renommer l'entrée LDAP en renommant le RDN (Relative Distinguished Name)

Il semble que le renommage d'une entrée LDAP ne soit pas possible en utilisant la fonction samba-tool et nous devons utiliser 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

Cela modifiera également les attributs cn et name mais pas certains autres attributs, contenant toujours l'ancien nom d'utilisateur comme le montre la recherche suivante :

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

Modifier les attributs restants

Pour modifier également d'autres attributs, comme par exemple givenName , displayName o mail on peut l'utiliser :

samba-tool user edit newuser

et modifier l'utilisateur de manière interactive ou utiliser un autre ldbmodify comme suit :

Créez un fichier texte ( rename-other-attrs.ldif ) avec le contenu suivant :

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

Modifier l'entrée LDAP: :

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

0 votes

Merci beaucoup ! si seulement samba-tools dans debian Stretch était assez récent pour inclure l'option "samba-tools user edit" : ]

1 votes

Vous pouvez utiliser ldbedit de la ldb-tools pour éditer l'entrée/base de données de manière interactive et faire toutes les modifications effectuées avec samba-tool user edit o ldbmodify . Par exemple : ldbedit -H /var/lib/samba/private/sam.ldb 'cn=John Doe'

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X