SSHを介してrsyncを使用してリモート展開を構成しているため、パスワードなしでsudoコマンドを実行する必要があります。
これは私の視覚的です。
# Allow user to execute specified commands without password
Cmnd_Alias USER_SERVICES = /bin/systemctl reload nginx, /usr/sbin/nginx
-t
[user] ALL=(ALL) NOPASSWD:USER_SERVICES
この設定では、パスワードプロンプトなしで指定されたコマンド(入力されたコマンド)を手動で実行できることを確認できますが、スクリプトファイル(下図)でコマンドを実行するたびにパスワードの入力を求められます。
#! /bin/bash
...
sudo systemctl reload nginx
...
この場合、パスワードプロンプトを回避する方法は?
答え1
これら2つのコマンドは同じではsystemctl reload nginx
ありません。/bin/systemctl reload nginx
1つ目は環境変数に含まれるディレクトリに依存しPATH
、2つ目は環境変数に含まれるディレクトリには依存しません。
このsudoers
ファイルを使用すると使用できるため、/bin/systemctl reload nginx
このファイルを使用する必要があります。