パスワードは無意味で長いものを利用しているので、どうしても思い出せないことがあって、パスワードをリセットしたくなることがある。
パスワードをコマンドで変更するにはどうしたらいいのか調べてみた。
パスワード変更方法
パスワード変更(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なしでこの操作ができると、運用が楽になるかもしれない。
コメントはこちらから お気軽にどうぞ ~ 投稿に関するご意見・感想・他