しょーもないことで詰まってしまったメモ。
先にまとめ
Azure Linux エージェント (walinuxagent, waagent) 経由で VM ユーザのパスワードリセットをすると、sudo 実行時にパスワードを要求するようになるっぽい。
困ったこと
だいぶ前に Azure VM を作成した。
- OS は Linux (Ubuntu 24.04)
- 管理ユーザはデフォルトのまま (
azureuser) - パスワードは指定せず、公開鍵認証で SSH ログインする設定
- 作成当初、管理ユーザで SSH ログインした際にパスワードなしで
sudoが使えた
しかし数カ月後にこの VM に SSH ログインすると、sudo 実行時にパスワードが要求されるようになってしまった。
azureuser@my-vm:~$ sudo ls
Password:
いや、パスワードなんて設定してないから知らんが...?
暫定対応
とりあえずパスワードを再設定することで sudo を使えるようにする。
これは Azure Portal で「接続 > パスワードまたはキーのリセット」からできた。
恒久対応
sudo が使えるようになったところで sudoers まわりの設定を眺めていると、なにかを発見。
azureuser@my-vm:~$ sudo grep -R "azureuser" /etc/sudoers /etc/sudoers.d/
/etc/sudoers.d/waagent:azureuser ALL = (ALL) ALL
/etc/sudoers.d/90-cloud-init-users:azureuser ALL=(ALL) NOPASSWD:ALL
waagent の設定ファイルが NOPASSWD:ALL を上書きしていたせいでパスワードが要求されるようになっていた模様。
waagent は Azure Linux エージェントのことで、Azure Portal からパスワードをリセットした際にこのファイルが作成されるっぽい。おそらく今回の対応以前に誰かがパスワードリセットをしており、そのときに作成されたのだと思われる。
というわけで、この設定を無効化する。
azureuser@my-vm:~$ sudo EDITOR=vim visudo -f /etc/sudoers.d/waagent
visudo でファイルを開いて、当該行をコメントアウト (#) したところ、無事パスワードなしで sudo が使えるようになった。
