sudoするときにパスワードを聞かれますが、それを省略する設定です。特定のコマンドだけ省略するということもできます。
$ sudo visudo
で設定します。
設定にはもちろんroot権限がいるのでこの時点でsudoが実行できる必要はあります。
省略を許可する範囲に応じて下記3パターンがあります。
1. 特定ユーザーの特定コマンドだけsudoのパスワード入力を省略する
特定のユーザーが特定のコマンドを実行するときだけsudo時のパスワード入力を省略できます。セキュリティを考慮すると、これで変更がない読み込みや表示のコマンドだけ許可するのが理想です。
$ sudo visudo
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
の下に
[USERNAME] ALL=NOPASSWD: [COMMAND]
という形式で入力します。
例 developer ユーザーのlsだけパスワード入力を省略する場合
developer ALL=NOPASSWD: /usr/bin/ls
/usr/bin/lsではなくlsとだけ入力しているとエラーになります。$ which ls
のように実行すると実態のパスが表示できるのでそちらを入力しましょう。
複数コマンドを登録する場合は複数行記載します。
ユーザー名毎に並べておいたり、コマンドの並び順をアルファベット昇順にするなどルール化して登録状況がわかりやすいようにしておきましょう。
書き換えたらCtrl+O,Enter、Ctrl+Xで保存して完了しましょう。
2. 特定のユーザーだけsudoのパスワード入力を省略する
指定したユーザーはなんでもsudoをパスワード無しで実行可になります。パスワードを知らなくてもなんでもsudoできるので、権限的には実質rootユーザーを使うのとあまり変わらない状態になります。
セキュリティを考えると1の方が理想ですが、小規模なサービスの管理ユーザーなどはこの設定をしていることも多いのではないでしょうか。
$ sudo visudo
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
の下に
[USERNAME] ALL=NOPASSWD: ALL
という形式です。1のコマンドの代わりにALLが入ります。
例)ユーザー名 developer なら
developer ALL=NOPASSWD: ALL
書き換えたらCtrl+O,Enter、Ctrl+Xで保存して完了しましょう。
3. sudoグループのユーザーでsudoのパスワード入力を省略する
sudoできるユーザーなら誰でもパスワード無しでsudoが実行できます。
$ sudo visudo
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
の%sudoの行を
%sudo ALL=(ALL:ALL) NOPASSWD:ALL
に書き換えるとOKです。
書き換えたらCtrl+O,Enter、Ctrl+Xで保存して完了しましょう。
終了時にerrorがでたら
$ sudo visudo
で書き換えて終了時に
>>> /etc/sudoers: syntax error near line 21 <<<
What now?
というようなエラーが出ることがあります。
こちらは、このままだと問題がでるというときにエラーをチェックして表示してくれます。
visudoは /etc/sudoers というファイルを書き換えているのですが、このファイルを直接編集せずわざわざvisudoで書き換えるのは万一の際にこのようにチェックしてくれるからです。
What now?
と表示されたらEnterを一度おしましょう。すると
Options are:
(e)dit sudoers file again
e(x)it without saving changes to sudoers file
(Q)uit and save changes to sudoers file (DANGER!)
What now?
と、選択肢が表示されます。
eを押して、エラー表示があった行を確認し修正して保存しましょう。
エラーの表示なく完了した場合には問題がなく、すでに設定が反映されています。ログイン済みのユーザーは再ログインなども必要ありません。
sudoを実行して設定したとおりに動作するか確認しましょう。