Ubuntu

Ubuntu20.04 Samba-AD-DCのアカウントロックを解除

最近はパスワードを覚える機能を色々なアプリケーションが実装しているので、アカウントロックされるケースはそんなにないのだけれど、それでもたまにはミスすることもある。
アカウントロックをコマンドで解除するにはどうしたらいいのか調べてみた。



広告


ロック解除方法

ロック解除(Samba AD DCサーバーで)

ロック解除をするコマンドはないみたい。
[Samba] Unlock domain user

そのため、ユーザーの情報を編集してロックを解除していく。まずはエディターを起動。

$ sudo samba-tool user edit <username>

lockoutTimeを0に設定する。

lockoutTime: 0

Samba 4.14からはこちらが使える模様

$ sudo samba-tool user unlock <username>

Ubuntu 20.04は、4.13.14とかになっているので多分使えなくて、次のUbuntu 22.04から使えるのではないだろうか。

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

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

$ sudo apt install ldap-utils

早速情報を見てみる。

$ ldapsearch -H ldaps://addc.hogeserver.hogeddns.jp \
-b "cn=Users,dc=hogeserver,dc=hogeddns,dc=jp" -s sub \
-D rohhie@hogeserver.hogeddns.jp.jp -W \
"(&(objectClass=user)(samaccountname=rohhie))"
ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1)

おっと。これは、LDAPSを利用しているのに、CAの証明書を入れ忘れていた。

/usr/local/share/ca-certificatesにうちで使っているオレオレCA証明書を入れて、有効化させる。

$ sudo update-ca-certificates
Updating certificates in /etc/ssl/certs...
1 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d...
done.

改めて情報表示。

$ ldapsearch -H ldaps://addc.hogeserver.hogeddns.jp \
-b "cn=Users,dc=hogeserver,dc=hogeddns,dc=jp" -s sub \
-D rohhie@hogeserver.hogeddns.jp.jp -W \
"(&(objectClass=user)(samaccountname=rohhie))"
Enter LDAP Password: アクセスする人のパスワードを入力[Enter]
# extended LDIF
#
# LDAPv3
# base <cn=Users,dc=hogeserver,dc=hogeddns,dc=jp> with scope subtree
# filter: (&(objectClass=user)(samaccountname=rohhie))
# requesting: ALL
#

# rohhie, Users, hogeserver.hogeddns.jp
dn: CN=rohhie,CN=Users,DC=hogeserver,DC=hogeddns,DC=jp
…
lockoutTime: 0
…

※もしかしたらlockoutTimeの項目がないかもしれない。ロックされると初めて項目が作られるようだ。
※実行するコマンドの最後にlockoutTimeを付けると、その値だけを表示してくれる。

では、アカウントをロックさせて、リモートからロックを解除する。

まずは、アカウントがロックされているのかどうか、administratorアカウントでみてみる。
※通常の運用では、これは少し大げさで、アカウント管理ができるアカウントを作っておくのが良いかなと思う。

$ ldapsearch -H ldaps://addc.hogeserver.hogeddns.jp \
-b "cn=Users,dc=hogeserver,dc=hogeddns,dc=jp" -s sub \
-D administrator@hogeserver.hogeddns.jp -W \
"(&(objectClass=user)(samaccountname=rohhie))" lockoutTime
…
lockoutTime: 132824924408855990

ちょっと面倒なのだけれども、更新のための情報を書いたファイルを事前に作っておく必要があるらしい。
./entrymods ※ファイル名は何でも良いし、どこにおいても良い。

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

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

$ 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"

更新できたかどうか確認してみる。

$ ldapsearch -H ldaps://addc.hogeserver.hogeddns.jp \
-b "cn=Users,dc=hogeserver,dc=hogeddns,dc=jp" -s sub \
-D administrator@hogeserver.hogeddns.jp -W \
"(&(objectClass=user)(samaccountname=rohhie))" lockoutTime
…
lockoutTime: 0

ロックが解除できている。

さいごに

これって、Winodws Serverでも動くのだろうか?ウチにはないので試せないけれど、できるのであれば使い道は少し広げられるかもしれない。
セルフでロック解除できる仕掛けが作れれば、便利かもしれない。

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