PHP를 통해 Linux(CentOS)의 apache 데몬을 graceful 혹은 restart 해야 하는 상황이 생겼다.
기본적으로 별도의 리눅스 sudo 설정을 하지 않았다면,
PHP의 exec() 이나 shell_exec() 함수를 통한 리눅스 명령어 엑세스는
디렉터리를 조회하는 등의 일반 user 에게 부여되는 엑세스만 가능하다.
apache 등의 데몬을 제어하기 위해선 sudo 설정을 통해 일부 명령어에 root 권한을 부여해야 한다.
(CentOS 7.*를 기준으로 한다.)
#visudo
로 sudo 설정파일을 연다.
( #vi sudoers 로 열게 되면 readonly 모드로 열리므로 #visudo 로 열어 수정해야 한다. )
apache ALL=NOPASSWD:/sbin/service
를 추가한다.
가장 앞에 위치한 'apache'의 경우 리눅스 셋팅에 따라
www-data 혹은 nobody 가 되기도 하므로 주의!
visudo를 수정 하였기 때문에 /sbin/service 에 apache 에게 root 권한이 부여 되어
웹에서 PHP를 통해 service 제어가 가능해졌다.
아래와 같이
test.php 파일 하나를 만들고 테스트 코드를 작성해 보자.
exec("/usr/bin/sudo /sbin/service httpd restart");
http://domain/test.php
로 접속하게 되면 정상적으로 아파치가 재시작 된 것을 확인해 볼 수 있다.
[linux] CentOS 7.8에 무료SSL 인증서 Let's encrypt 발급 및 설치 (2) | 2021.08.10 |
---|---|
[티스토리] 2차 도메인 연결한 경우 구독하기 버튼 작동되도록 개선하기 (3) | 2021.08.10 |
[NAS] 시놀로지 나스와 구글 DDNS 연결하기 (0) | 2021.08.09 |
[NAS] 시놀로지 NAS의 IP가 변경되는 경우(유동IP) 도메인 접속 안되는 문제 대응 방법 (0) | 2021.08.09 |
[jQuery] file 인풋에 이미지 첨부시 썸네일 보여주기(Blob) (0) | 2021.08.09 |
댓글 영역