2017年10月26日木曜日

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 の情報を調べてみるとよい。

0 件のコメント:

コメントを投稿