ubuntu 16.04LTS の使用
簡単なスクリプトを実行することで、sudo 権限を持たないゲスト ユーザーが必要なときにいつでも nginx をリロードできるようにしようとしています。
#!/bin/sh
nginx -s reload
権限を持つ-r-xr-xr-x
sudoers ファイルに次の行を追加して、それを実行できるようにします。
root ALL=(ALL:ALL) ALL
guest ALL=NOPASSWD: /path/to/script.sh
これでも、許可が拒否されたというエラーが発生します。
nginx: [alert] could not open error log file: open() "/usr/local/nginx/logs/error.log" failed (13: Permission denied)
ゲスト ユーザーに sudo パーミッションを付与したくありませんが、nginx をリロードするには、通常、次を使用する必要がありますsudo nginx -s reload
編集:私の問題を解決しました-ゲストユーザーがスクリプトを介して必要なコマンドを実行しようとして、問題を考えすぎていました。また、 /etc/sudoers がどのように機能したかを実際に理解していません。このビデオは大いに役立ちました: https://www.youtube.com/watch?v=YSSIm0g00m4
root として sudoers.d ファイルを作成しvisudo -f /etc/sudoers.d/guests
、ゲストに nginx および nginx 単独での sudo 権限を正しく付与します。
Cmnd_Alias NGINX = /usr/local/nginx/sbin/nginx
Cmnd_Alias GUESTS_CMND = NGINX
%guests ALL=GUESTS_CMND