Wie benenne ich einen Benutzer in einer Samba4-Domäne um?

Wie benenne ich einen Benutzer in einer Samba4-Domäne um?

Wie kann ich die Anmeldung eines Benutzers in einer Samba4-basierten Domäne ändern?

Ich habe versucht, die Manpage des Samba-Tools zu lesen, aber sie scheint nichts zu enthalten, was für mich nützlich sein könnte.

Antwort1

Angenommen, wir verwenden Ubuntu und Samba 4 ist als DC (Active Directory Domain Controller) konfiguriert und wir möchten den Benutzer mit Namen Old Userund Login ändern olduser. Um nur den Loginnamen eines Benutzers umzubenennen, können wir Folgendes verwenden samba-tool:

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

Dadurch wird ein Editor geöffnet, der den Inhalt des LDAP-Eintrags anzeigt. Ändern Sie die Attribute sAMAccountNameund userPrincipalName, speichern Sie und beenden Sie. Möglicherweise möchten Sie auch ein vorhandenes Home-Verzeichnis des Benutzers umbenennen.

Wir können den LDAP-Eintrag auch direkt bearbeiten, ohne die zu verwenden, samba-toolsondern mit der ldb-tools.

Installieren ldb-tools:

apt install ldb-tools

Jetzt können wir ldb-tools( ldbadd, ldbdel, ldbedit, ldbmodify, ldbrename, ldbsearch) verwenden, um die LDAP-Datenbank direkt zu durchsuchen oder zu ändern.

Suchen Sie die Samba LDAP-Datenbank:

Wenn Sie eine Ubuntu-Paketversion von installiert haben samba, sollte diese Datei unter zu finden sein /var/lib/samba/private/sam.ldb.

Schauen wir uns zunächst diesen Benutzer in der LDAP-Datenbank an:

Suche in der Datenbank:

Wir verwenden ldbsearchhierfür folgende Syntax:

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

Mit <ldap-filter>können wir einen Ausdruck angeben, um die von der Suche zurückgegebenen Einträge zu filtern. Wir können beispielsweise sAMAccountName=oldusernach dem Anmeldenamen-Attribut oder CN=Old Usernach dem CN-Attribut (Common Name) filtern:

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

...

Ändern der Anmeldenamenattribute

Erstellen Sie eine Textdatei ( rename-login.ldif) mit folgendem Inhalt:

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]

Dadurch werden die Attribute geändert sAMAccountNameund userPrincipalName:

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

Benennen Sie den LDAP-Eintrag um, indem Sie den RDN (Relative Distinguished Name) umbenennen.

Es sieht so aus, als ob das Umbenennen eines LDAP-Eintrags mithilfe von nicht möglich ist samba-toolund wir müssen Folgendes verwenden 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

Dadurch werden auch die Attribute cnund geändert name, jedoch nicht einige andere Attribute, die noch den alten Benutzernamen enthalten, wie die nächste Suche zeigt:

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

Ändern Sie die restlichen Attribute

Um auch einige andere Attribute zu ändern, wie beispielsweise givenNameoder , können wir Folgendes verwenden displayName:mail

samba-tool user edit newuser

und bearbeiten Sie den Benutzer interaktiv oder verwenden Sie einen anderen ldbmodifywie folgt:

Erstellen Sie eine Textdatei ( rename-other-attrs.ldif) mit folgendem Inhalt:

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]

Ändern Sie den LDAP-Eintrag:

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

Antwort2

Man kann auch das Naheliegende versuchen:

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

Ich poste das, weil es bei Active Directory viele Definitionen für „Anmeldung“ gibt (man kann z. B. userPrincipalName verwenden, es gibt aber auch andere Optionen, z. B. ermöglicht die App, an der ich arbeite, Benutzern die Anmeldung nur mit ihrem CN).

verwandte Informationen