次の行の違いは何ですか?
user1 ALL=(ALL) NOPASSWD: /etc/init.d/service-script
user1 ALL=NOPASSWD:/etc/init.d/service-script
どちらの行も正確で、違いはありますか?サービススクリプトを実行するには、user1にsudoアクセスを提供する必要があります。
答え1
最初の行には正しい構文があります。
user1 ALL=(ALL) NOPASSWD: /etc/init.d/service-script
つまり、このファイルを使用するすべてのホストで、user1は/etc/sudoers
パスワードなしで実行できるすべてのユーザーになることができます。/etc/init.d/service-script
2行目の構文は、少なくとも最新バージョンでは正しくありませんsudo
。/etc/sudoers
推奨visudo
コマンドを使用して編集すると、お気に入りのエディタを終了した後に次のようなメッセージが表示されます。
File /etc/sudoers.tmp saved
>>> /etc/sudoers: syntax error near line 28 <<<
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」を選択して間違った行を削除するか、「x」を選択して今回行った編集内容をすべてキャンセルすることをお勧めします。
/etc/sudoers
正しい構文を思い出させるために、ファイルに次のコメントを入力できます。
# WHO WHERE = (AS WHOM) WHAT
(AS WHOM)
セクションとセクションの間にWHAT
プロセスのいくつかの詳細に影響を与える可能性があるコロンで終わるいくつかのマーキングをオプションで追加できます。
サービススクリプトは/etc/init.dにあり、明らかにrootとして実行されるようになっています。したがって、「ベスト」/etc/sudoers行は次のようになります。
user1 ALL=(root) NOPASSWD: /etc/init.d/service-script
ユーザーはこれを次のように実行する必要があります。
sudo /etc/init.d/service-script
または明示的に
sudo -u root /etc/init.d/service-script
コマンドラインの末尾にパラメータを追加できます。
答え2
どちらも期待どおりに行われます。ただし、最初の場合、user1は他のユーザーと同じようにコマンドを実行できます。 2番目のコマンドでは、コマンドはルートとして実行されます(予想されるものと似ています)。