sudo のパスワード入力を省略できるようにする
OpenVPN で、接続確立後に自動で NFS をマウントし、接続切断時(直前)に NFS をアンマウントするシェルスクリプトを使おうと思った。ところが、mount / umount には root 権限が必要なので、通常では sudo するのにパスワード入力が求められてしまう。
色々調べた結果、/etc/sudoers という設定ファイルによって制御が可能であり、さらに sudoers を編集するのには危険が伴うので、visudo を通じて編集するのが常識的だということがわかった。
macOS / Linux のいずれにおいても、基本的には
%admin ALL=(ALL) ALL
となっている部分を
%admin ALL=(ALL) NOPASSWD:ALL
とすればよい。これは管理者グループに所属するユーザーを対象に、sudo コマンドの実行時にパスワードを不要とする設定である。(また、このようにグループの設定からアプローチするやり方ではなく、個々のユーザー単位で同様の設定をするアプローチでも可能である)
注 1:エントリーの順番
Mac では root と %admin しか元々エントリーがなかったので、気にする必要はなかったが、Linux(Ubuntu GNOME 16.04LTS)では root / %admin / %sudo となっていて、グループのエントリーが %admin と %sudo の 2 種類あった。この状態で %admin のエントリーを NOPASSWD にしても %sudo のエントリーで上書きされてしまうので、エントリーの順序を入れ替えて、%sudo の後に %admin のエントリーが来るように編集しなければならない。
注 2:Ubuntu GNOME 16.04LTS での管理者グループ ID
Ubuntu GNOME 16.04LTS では管理者グループの ID が admin ではなく、adm であった。にもかかわらず、sudoer のエントリーは %admin となっていたため、%adm と修正する必要があった。
注 3:visudo
visudo はその名の通り、vi がベースになっているので、操作がよくわからない場合は vi の情報を調べてみるとよい。
コメント
コメントを投稿