sudoをパスワード無しで実行する方法

sudoをパスワード無しで実行する方法
sudoをパスワード無しで実行する方法

sudoのコマンドを入力するとパスワードの入力を求められます。

毎回パスワードを入力するのは大変なので、sudoersでパスワード無しを設定しましょう。

ももぶろ
ももぶろ

設定を失敗すると直ぐにsudoが使えなくなります。慎重に!

方法1 visudoで /etc/sudoersを編集する方法

visudoコマンド

下記の専用の編集コマンドで /etc/sudoersを編集します。

$ sudo visudo
[sudo] password for newuser:         <= パスワードを入力してください。

このエディタの優秀なところは、変な設定すると書き込む前にエラーチェックをして結果を出力してくれる点です。

$ sudo visudo
>>> /etc/sudoers: syntax error near line 24 <<<
What now?  <=リターン入力で案内が表示される
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  <=e:再度編集 x:変更なしで終了 Q:変更を反映して終了(危険!)

正しく編集がされていると、何も言わずに書き込んでくれます。

設定内容(/etc/sudoers)

/etc/sudoersの初期値は下記の通りでした。

#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults        env_reset
Defaults        mail_badpass
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

# This fixes CVE-2005-4890 and possibly breaks some versions of kdesu
# (#1011624, https://bugs.kde.org/show_bug.cgi?id=452532)
Defaults        use_pty

# This preserves proxy settings from user environments of root
# equivalent users (group sudo)
#Defaults:%sudo env_keep += "http_proxy https_proxy ftp_proxy all_proxy no_proxy"

# This allows running arbitrary commands, but so does ALL, and it means
# different sudoers have their choice of editor respected.
#Defaults:%sudo env_keep += "EDITOR"

# Completely harmless preservation of a user preference.
#Defaults:%sudo env_keep += "GREP_COLOR"

# While you shouldn't normally run git as root, you need to with etckeeper
#Defaults:%sudo env_keep += "GIT_AUTHOR_* GIT_COMMITTER_*"

# Per-user preferences; root won't have sensible values for them.
#Defaults:%sudo env_keep += "EMAIL DEBEMAIL DEBFULLNAME"

# "sudo scp" or "sudo rsync" should be able to use your SSH agent.
#Defaults:%sudo env_keep += "SSH_AGENT_PID SSH_AUTH_SOCK"

# Ditto for GPG agent
#Defaults:%sudo env_keep += "GPG_AGENT_INFO"

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root    ALL=(ALL:ALL) ALL

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

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

@includedir /etc/sudoers.d      <=このディレクトリから続きが読み込まれる

ここに、新しいユーザ(今回newuserを追加)の設定行を追加します。

newuser ALL=(ALL) NOPASSWD:ALL

visudoの操作方法

visudoでnewuserを追加している画面です。

visudo編集中の画面
visudo編集中の画面

ここでファイルを出力するため、CTRL + o のキーを押します。

画面の ^ はCTRLのキーを一緒に押して欲しいという意味です。

visudo編集中の画面でCTRL + oのキーを押した画面
visudo編集中の画面でCTRL + oのキーを押した画面

ここでリターンを押すと、編集中の/etc/sudoers.tmpが編集元ファイルに上書きされます。

visudo編集中の画面
visudo編集中の画面

visudoの終了は、CTRL + xです。

方法2 /etc/sudoers.dにユーザごとの設定ファイルを配置する方法

方法1だと、/etc/sudoersのファイルの中がぐちゃぐちゃになっていきます。

そこで、/etc/sudoersのファイルの最後に “#includedir /etc/sudoers.d”の指定があり、/etc/sudoers.dのフォルダ配下のファイルが全て読み込まれるようになっています。

そこで、ユーザごとの設定ファイルを /etc/sudoers.d のフォルダ配下に作成し設定を行います。

その場合のvisudoの指定の仕方は

$ sudo visudo -f /etc/sudoers.d/010_newuser-nopasswd

パスワード無しで全てのコマンドを利用可能とするため下記の内容を追加します。

newuser  ALL=(ALL) NOPASSWD: ALL

これで、newuserでログインした後、sudoコマンドを使用してもパスワードを聞かれなくなります。

visudoの操作方法は、方法1を参照ください。

タイトルとURLをコピーしました