一般ユーザーがシステムでapachectlを実行できることを願っています。これが彼らが通常の権限の外でできる唯一のことです。私がしたことは、sudoersファイルの一番下に次の行を追加したことです。
sampleuser ALL=(root) NOEXEC:/usr/sbin/apachectl
そのため、ユーザーexampleuserでapachectl
コマンドを実行しましたが、次のエラーが発生しました。
$ sudo apachectl stop
[sudo] password for sampleuser:
/usr/sbin/apachectl: line 105: /usr/sbin/httpd: Permission denied
apachectl
スクリプトはその実行可能ファイルを呼び出すので、/ usr / sbin / httpdコマンドを介して権限を取得したようです。だからsudoersファイルに別の行を追加しました。
sampleuser ALL=(root) NOEXEC:/usr/sbin/httpd
これで同じコマンドを実行しましたが、同じエラーが発生しました。
sudo apachectl start
[sudo] password for sampleuser:
/usr/sbin/apachectl: line 105: /usr/sbin/httpd: Permission denied
今私の質問は、apachectlスクリプトファイルなどを編集せずに、私が望むものより簡単にできるソリューションがあるかどうかです。
ありがとうございます。
答え1
Apachectlはhttpdを実行するためにsudoを使用する必要があることを知りません。
次のようにしてみてください。
APACHE_HTTPD='sudo -E /usr/sbin/httpd' sudo -E /usr/sbin/apachectl start
-E, --preserve-env
Indicates to the security policy that the user wishes to reserve their
existing environment variables. The security policy may eturn an error
if the user does not have permission to preserve the environment.
したがって、apache2ctlはhttpdを呼び出すために別のコマンドを使用するように強制します。