Ubuntu

Ubuntu20.04 Samba-AD-DCのパスワードリセット

パスワードは無意味で長いものを利用しているので、どうしても思い出せないことがあって、パスワードをリセットしたくなることがある。
パスワードをコマンドで変更するにはどうしたらいいのか調べてみた。



広告


パスワード変更方法

パスワード変更(Samba AD DCサーバーで)

パスワードに関わるコマンドは2つあった。

rohhieユーザーとしてパスワードを変更する。

$ samba-tool user password -U rohhie
Password for [MYHOME\rohhie]: [現在のパスワード][Enter]
New Password: [新しいパスワード][Enter]
Retype Password: [新しいパスワード][Enter]
Changed password OK

管理者がrohhieユーザーのパスワードを変更する。

$ sudo samba-tool user setpassword rohhie
New Password: [新しいパスワード][Enter]
Retype Password: [新しいパスワード][Enter]
Changed password OK

ロック解除(他のホストから)

他のホストからロックを解除する場合にはsamba-toolが使えないので、LDAPで操作する。

$ sudo apt install ldap-utils

パスワード変更について、ここで記載されている。
Microsoft Docs / Ldifde でユーザーのパスワードを設定する方法

具体的なコードがこちらに書かれていた。
[Samba] Changing active directory user password via LDAP

パスワードは、2重引用符で囲んだUTF-16LEの文字列で、それをBase64エンコーディングして設定することになっていることが分かったので、パスワード文字をエンコードする部分だけを切り出してみる。

password-encoding.sh

#!/bin/bash
password='"'$1'"'
echo    "Parameter : "$password
echo -n "Result    : "
echo -n $password | iconv -f ascii -t UTF16LE | base64

実行権限を付けて試してみる。

$ chmod +x password-encoding.sh
$ ./password-encoding.sh P@ssword123
Parameter : "P@ssword123"
Result    : IgBQAEAAcwBzAHcAbwByAGQAMQAyADMAIgA=

更新のための情報を書いたファイルを作る。
./entrymods ※ファイル名は何でも良いし、どこにおいても良い。

dn: cn=rohhie,cn=Users,dc=hogeserver,dc=hogeddns,dc=jp
changetype: modify
replace: unicodePwd
unicodePwd::IgBQAEAAcwBzAHcAbwByAGQAMQAyADMAIgA=
-
replace: lockoutTime
lockoutTime: 0

※ついでにロック解除も実行。

unicodePwdの後ろにコロン(:)が2つ…。LDIFの::は、値がBase64エンコーディングされていることを表している模様。
NARKIVE / Double colon in LDIF

作ったファイルを読み込む形で、更新を実行してみる。

$ ldapmodify -f entrymods -H ldaps://addc.hogeserver.hogeddns.jp -D administrator@hogeserver.hogeddns.jp -W
Enter LDAP Password:
modifying entry "cn=rohhie,cn=Users,dc=hogeserver,dc=hogeddns,dc=jp"

これで、パスワードが更新できた。

ちなみに、unicodePwdの後ろのコロンを1つにした場合、このようなエラーが出る。

$ ldapmodify -f entrymods -H ldaps://addc.hogeserver.hogeddns.jp -D administrator@hogeserver.hogeddns.jp -W
Enter LDAP Password:
modifying entry "cn=rohhie,cn=Users,dc=hogeserver,dc=hogeddns,dc=jp"
ldap_modify: Server is unwilling to perform (53)
        additional info: 00002035: setup_io: it's not allowed to set the NT hash password directly'

また、パスワードの複雑さが要件を満たしていない場合、このようなエラーが出る。

$ ldapmodify -f entrymods -H ldaps://addc.hogeserver.hogeddns.jp -D administrator@hogeserver.hogeddns.jp -W
Enter LDAP Password:
modifying entry "cn=rohhie,cn=Users,dc=hogeserver,dc=hogeddns,dc=jp"
ldap_modify: Constraint violation (19)
        additional info: 0000052D: Constraint violation - check_password_restrictions: the password does not meet the complexity criteria!

さいごに

よそのホストから、パスワード更新と、アカウントロックの解除ができるようになった。
遠隔からGUIなしでこの操作ができると、運用が楽になるかもしれない。

コメントはこちらから お気軽にどうぞ ~ 投稿に関するご意見・感想・他