samba4 도메인에서 사용자 이름을 바꾸는 방법은 무엇입니까?

samba4 도메인에서 사용자 이름을 바꾸는 방법은 무엇입니까?

Samba4 기반 도메인에서 사용자의 로그인을 어떻게 변경할 수 있습니까?

samba-tool 매뉴얼 페이지를 읽어보았지만 사용할 수 있는 내용이 표시되지 않는 것 같습니다.

답변1

Ubuntu를 사용하고 Samba 4가 DC(Active Directory 도메인 컨트롤러)로 구성되어 있고 name Old User및 login 으로 사용자를 변경한다고 가정합니다 olduser. 사용자 로그인 이름을 바꾸려면 다음을 사용할 수 있습니다 samba-tool.

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

그러면 LDAP 항목의 내용을 보여주는 편집기가 열립니다. 속성을 변경 sAMAccountName하고 userPrincipalName저장한 후 종료합니다. 사용자의 기존 홈 디렉터리 이름을 바꿀 수도 있습니다.

samba-tool을 사용하지 않고 를 사용하여 LDAP 항목을 직접 편집할 수도 있습니다 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 UserCN(일반 이름) 속성을 기준으로 필터링하는 데 사용할 수 있습니다 .

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

RDN(상대 고유 이름)의 이름을 바꾸어 LDAP 항목의 이름을 바꿉니다.

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만으로 로그인할 수 있습니다.

관련 정보