일반 사용자가 시스템에서 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를 호출하기 위해 다른 명령을 사용하도록 강제합니다...