Ubuntu 16.04: sudoでパスワード入力を不要にする

sudoでパスワード入力を不要にする方法について記載します。

スクリプトでの操作自動化が可能になります。

 

1 sudoでパスワード入力を不要にする

visudoで/etc/sudoersを編集します。この時点ではまだパスワードが必要です。

$ sudo visudo
[sudo] password for hiroom2:

sudoグループのところを以下のように変更します。

$ sudo diff -uprN /etc/sudoers{.org,}
--- /etc/sudoers.org    2016-07-06 21:36:02.851839781 +0900
+++ /etc/sudoers        2016-07-06 21:36:17.335682680 +0900
@@ -23,7 +23,7 @@ root  ALL=(ALL:ALL) ALL
 %admin ALL=(ALL) ALL

 # Allow members of group sudo to execute any command
-%sudo  ALL=(ALL:ALL) ALL
+%sudo  ALL=(ALL:ALL) NOPASSWD:ALL

 # See sudoers(5) for more information on "#include" directives:

これ以降はsudoでパスワード入力が不要となります。

2 sudoでリダイレクトを扱う

パスワード入力とは離れますが、スクリプトでの操作自動化で必要になる場合があるので記載します。

以下のようにcommandはsudoで実行されますが、リダイレクトの>はsudoで実行されない為、/etc/fileに書き込めません。

$ sudo command > /etc/file

sudo su -cを用いてrootでcommandとリダイレクトを実行します。

$ sudo su -c 'command > /etc/file'

あるいはteeコマンドを用います。

$ sudo command | sudo tee /etc/file