권한이 없는 사용자에게 apachectl 스크립트를 실행할 수 있는 권한을 부여해야 합니다.

권한이 없는 사용자에게 apachectl 스크립트를 실행할 수 있는 권한을 부여해야 합니다.

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

관련 정보