Overview
sudo(superuser do)は、他のユーザー、主に管理者権限(root)でコマンドを実行するための仕組みです。
特定のコマンドに実行制限を設けることもでき、システム運用における安全性と柔軟性を両立します。
Ubuntu では、root ユーザーにパスワードを設定しない運用が前提となっており、初期設定時に作成される管理ユーザーが sudo 権限を持ちます。したがって、システムの管理操作はこのユーザーが sudo 経由で実行する形になります。
通常、sudo 実行時には自分自身のパスワード入力が求められます。一度認証すれば一定時間は再入力が不要ですが、タイムアウト後や再ログイン後には再度パスワードが必要です。
本稿では、sudo 実行時のパスワード入力を無効化する方法を解説します。
もちろん、運用ポリシー上パスワード認証を維持すべき環境ではこの設定は不要ですが、クラウド環境(例:AWS、Azure、GCP)が提供する Ubuntu イメージでは、利便性のためにこの設定がデフォルトで有効になっていることが多いです。
sudo パスワード入力が求められる理由
パスワード認証の目的は、「その操作を行うユーザーが正規の権限保持者であることを再確認する」点にあります。
たとえば、ログイン後にコンソールを放置したままの状態で第三者に操作されると、sudo によるシステム変更が容易に行われてしまいます。
そのため、認証を要求する設定はセキュリティ上の合理的な制限といえます。
しかし、アクセスが厳密に制御されたサーバーや、閉域網・自動化環境では、パスワード入力を省略して利便性を高める選択肢が現実的です。
sudo パスワード入力の無効化
以下のファイルを配置することで、次回ログイン時から sudo を実行する際のパスワード入力が不要となります。ここでは myadmin が管理ユーザーとなります。
sudo tee /etc/sudoers.d/admin <<"EOF"
myadmin ALL=(ALL:ALL) NOPASSWD: ALL
EOFvisudo の推奨理由
本来、sudoers の編集には、visudo の利用が推奨されています。これは変更時の構文チェックを同時に行ってくれるためです。とはいえ、/etc/sudoers.d 内にファイルを配置して設定する方法は非常に便利であり、Ansible などの IaC から設定する際もシンプルにすることができます。


