質問: 一般ユーザでnginxを起動させることができるように下記のように /etc/sudoers.d/nginx_fooを作成しnginxをパスワードなしでsudoできるように設定しました。 ``` foo ALL=(ALL) NOPASSWD:/usr/local/nginx/sbin/nginx ``` しかし、`sudo nginx`とfooで実行してもパスワードを要求されてしまいます。 `#includedir /etc/sudoers.d`の記載はsudoersにあります。 修正点等あれば教えて頂きたく。 よろしくお願いします。
回答: 実は、`sudo nginx`の後に引数を指定していませんか? sudoersは、引数の有無やその値によっても別のコマンドとみなします。 例えば`nginx`と`nginx -c nginx.conf`は、sudoersからは別のコマンドとみなされます。 その場合、引数付きのコマンドを`sudoers`に設定するか、 以下のようにコマンドの末尾に正規表現の量指定子をつけてやる必要があります。 ``` foo ALL=(ALL) NOPASSWD:/usr/local/nginx/sbin/nginx * ``` 量指定子については以下のリンクの**Quick guide to EBNF**という項を参照してください。 上の予想が外れている場合、一度、`/etc/sudoers.d/nginx_foo`が本当にsudoersに読み込まれているか確認してみることをお勧めします。 わざと`/etc/sudoers.d/nginx_foo`に構文エラーを仕込み、`sudo`してみることで確認できます。 もし、正しくファイルが読み込まれていれば、警告メッセージが表示されるはずですので。