특정 조건에서 아파치 httpd를 다시 시작 해야하는 루트가 아닌 사용자로 스크립트를 실행 중입니다.
사용자가 그렇게 할 수있는 가장 간단한 방법은 무엇입니까?
Ubuntu Server 8.04 LTS를 사용하고 있습니다.
답변
짧은 답변:
를 사용 visudo
하여 sudoers 파일에 다음을 추가하고 username을 올바른 username으로 바꿉니다.
username ALL = /etc/init.d/apache2
이렇게하기 전에 비밀번호를 입력하지 않으려면 다음을 사용하십시오.
username ALL = NOPASSWD: /etc/init.d/apache2
그런 다음 ‘username’사용자는 실행 sudo /etc/init.d/apache2 start
(또는 중지, 재시작 등) 할 수 있습니다.
긴 대답 : 아직 사용하지 않은 경우 별도의 사용자를 설정 한 다음 사용자 또는 그룹이 원하는 명령을 실행할 수 있도록 / etc / sudoers 파일을 구성 할 수 있습니다.
예를 들어, 사용자 ‘ben’이 암호를 묻는 프롬프트로 모든 명령을 실행할 수있게하려면 다음을 수행하십시오.
ben ALL= ALL
‘ben’이 하나의 명령 (예 🙂 만 실행하도록하려면 rm
다음을 수행하십시오.
ben ALL= /bin/rm
사용자로 스크립트를 실행 중이고 비밀번호를 묻지 않으려면 다음과 같이 ‘NOPASSWD’옵션을 사용하십시오.
ben ALL=NOPASSWD: /bin/commandname options
다음과 같이 그룹 이름 앞에 백분율 기호를 붙여 그룹에 대해 동일한 작업을 수행 할 수 있습니다.
%supportstaff ALL= NOPASSWD: /bin/commandname
답변
짧은 대답 : sudo.
호출은 다음과 유사합니다. sudo /etc/init.d/apache2 restart
가장 쉬운 방법은 visudo
/ etc / sudoers 파일을 설정하는 것입니다. 참조 man sudoers
및 man visudo
자세한 내용은.
답변
apache2ctl에 랩퍼를 작성하고 웹 관리 그룹에 그룹 소유권을 지정하고 suid 비트를 설정하여이를 수행 할 수도 있습니다. 이것은 visudo보다 덜 일반적인 솔루션이지만 사용자 기능 및 오류 검사에 대한 사용자 지정 제한을 허용합니다.
나는이 도구를 내 필요에 맞게 작성하고 github에서 공유했습니다 : https://github.com/josiahjohnston/ltd_apache2ctl