これは、Sudoersファイルと一般的なSudoコマンドに関連するかなり複雑な質問です。
注:Ubuntu Desktop 13.04を実行している専用マシンでこれらの変更を行いました。これは純粋に学習目的で使用します。 NOPASSWD Sudoを有効にすると、セキュリティ上の大きなリスクになることを理解しています。
最初は、sudoersファイル(/ etc/sudoers)への唯一の変更は1行でした。これは、パスワードを入力せずにSudoですべてのコマンドを実行するために「nicholsonjf」を有効にするユーザー仕様です(「nicholsonjf '):
# 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"
# Host alias specification
# User alias specification
# Cmnd alias specification
# User privilege specification
root ALL=(ALL:ALL) ALL
nicholsonjf ALL=NOPASSWD: ALL
# Members of the admin group may gain root privileges
%admin 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
ただし、これは機能せず、「nicholsonjf」としてコマンドを実行するたびにパスワードの入力を求められました。 Sudoおよびadminグループから「nicholsonjf」を削除すると、「nicholsonjf」としてSudoコマンドの実行を開始できました。
なぜこれが機能したのか説明できますか?
これは、ユーザー「nicholsonjf」が「admin」と「Sudo」の2つのグループ仕様(sudoersファイルで下に表示)からSudo権限を継承していたためです。設定ファイル?
追加した行は上書きされました。 man sudoers
から:
ユーザーに対して複数のエントリが一致する場合、それらは順番に適用されます。複数の一致がある場合、最後の一致が使用されます(必ずしも最も具体的な一致とは限りません)。
あなたの場合、nicholsonjf
はグループSudo
のメンバーだったので、彼には次の行が適用されました。
%Sudo ALL=(ALL:ALL) ALL
/etc/sudoers
のエントリを上書きする場合は、それらの後に新しいエントリを追加します。
新しいエントリは次のようになります
myuser ALL=(ALL) NOPASSWD: ALL
単一ユーザーの場合、または
グループの%Sudo ALL=(ALL) NOPASSWD: ALL
。
単一ユーザーの場合、Sudo visudo
を使用してsudoers
ファイルの最後にこの行を追加します
superuser ALL=(ALL) NOPASSWD: ALL
グループ向け
%supergroup ALL=(ALL) NOPASSWD: ALL
現在のユーザーがSudo
を使用しているときにパスワードの入力を求めない
echo "$USER ALL=(ALL:ALL) NOPASSWD: ALL" | Sudo tee /etc/sudoers.d/dont-Prompt-$USER-for-password
これにより、/etc/sudoers.d/dont-Prompt-<YOUR USERNAME>-for-Sudo-password
というファイルが作成され、Sudo
コマンドの実行時にパスワードを要求されないため、そのコマンドを実行したユーザーが意味するようになります。 buntu Software グラフィカルアプリからのものをインストールするなど、他のコンテキストでもパスワードの入力を求められます。
/etc/sudoers
を使用してecho
コマンドの行をSudo visudo
に追加するよりも、この方法で行うことの利点は(他の回答で示唆されています)
/etc/sudoers
はシステムの更新によって変更されることがありますが、/etc/sudoers.d
のファイルは変更されませんSudo visudo
メソッドはエラーになりやすい(この質問からもわかるように)が、コマンドのコピー/貼り付けは混乱しにくいSudo cat /etc/sudoers.d/README
によると、この機能(/etc/sudoers.d
に追加のsudoerファイルを配置する機能)はDebian 1.7.2p1-1以降、デフォルトで有効になっています。これは 1990年代後半に登場 ( Ubuntuは Debianベース )です。