/etc/sudoers ファイルの構文の更新

/etc/sudoers ファイルの構文の更新

次の行の違いは何ですか?

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番目のコマンドでは、コマンドはルートとして実行されます(予想されるものと似ています)。

関連情報