리눅스 : 아파치를 재시작 할 수있는 권한을 부여하는 방법?


35

특정 조건에서 아파치 httpd를 다시 시작 해야하는 루트가 아닌 사용자로 스크립트를 실행 중입니다.

사용자가 그렇게 할 수있는 가장 간단한 방법은 무엇입니까?

Ubuntu Server 8.04 LTS를 사용하고 있습니다.

답변:


84

짧은 답변:

를 사용 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 

2
username매개 변수의 서브 세트로 제한 될 수 있습니까 ? 말 start restart하지만 stop?
ThorSummoner

visudo명령은 편집 내용의 안전 검사를 수행 하여 실수로 sudo/ su명령을 중단하지 않습니다 . unix.stackexchange.com/a/27595/61349
ThorSummoner

1

짧은 대답 : sudo.

호출은 다음과 유사합니다. sudo /etc/init.d/apache2 restart

가장 쉬운 방법은 visudo/ etc / sudoers 파일을 설정하는 것입니다. 참조 man sudoersman visudo자세한 내용은.


OP는 스크립트를 통해이를 수행하는 것에 대해 언급했습니다. 스크립트는 비밀번호를 입력 할 수 없으므로이 답변은 의미가 없습니다.
Matt Fletcher


0

apache2ctl에 랩퍼를 작성하고 웹 관리 그룹에 그룹 소유권을 지정하고 suid 비트를 설정하여이를 수행 할 수도 있습니다. 이것은 visudo보다 덜 일반적인 솔루션이지만 사용자 기능 및 오류 검사에 대한 사용자 지정 제한을 허용합니다.

나는이 도구를 내 필요에 맞게 작성하고 github에서 공유했습니다 : https://github.com/josiahjohnston/ltd_apache2ctl

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.