본문 바로가기
컴퓨터/리눅스

SELinux가 켜진 상황에서 cgi 실행시키기

by adnoctum 2018. 11. 17.


   문제를 상술하자면, SELinux 가 켜져 있는 상황에서 cgi 파일 안에서 외부 프로그램을 실행시키려 할 때 해야 하는 일이다. 관건은 file 의 SELinux security context를 변경시켜야 한다는 것이다. 

   SELinux가 켜져 있는 상황에서, 일반적이라면 cgi-bin 인 곳에 apache 가 실행시킬 수 있는 실행 파일이 위치하게 된다. 만약 그 스크립트 파일 안에서 다른 프로그램을 실행시켜야 한다면, 그렇게 실행을 당해야 하는 파일은 httpd_sys_script_exec_t context를 갖고 있어야 한다. 다음과 같이 한다. 

[centos@ABCDEFGH KKK]$ sudo chcon -t httpd_sys_script_exec_t [executible-file-name]

그것의 확인은 다음과 같이 -Z 지시자의 ls 명령어로 확인할 수 있다. 

[centos@ABCDEFGH KKK]$ ls -Z

-rwxrwxr-x. centos centos unconfined_u:object_r:httpd_sys_script_exec_t:s0 find_words


보다 자세한 내용은 SELinux 설명 페이지에 있으니 참고한다. 


SELinux가 켜져 있는 상황이라면 httpd 가 읽을 수 있는 파일, 쓸 수 있는 경로, 실행시킬 수 있는 파일 등이 모두 조절되어야 한다. 보통 권한 문제일 경우 chmod 명령어로 해결할 수 있었는데, 이 경우 이뿐만이 아니라 chcon 을 통한 security context까지 조절해 주어야 한다.