해당 문제를 해결하기 위해 거의 1주일가량을 소비했다..
이러한 문제를 다음에는 좀 더 빠르게 해결할 수 있도록 기록한다.
문제 상황 :
코드이그나이터(codeigniter 3.0)의 controller(. php )에서 shell_exec() 또는 exec() 함수를 사용하여 rm ~ , wget ~ 등의 쉘 명령어를 실행시키려고 하는데 정상적으로 동작하지 않는 문제가 발견됨.
os : centos 7
web server : nginx
source language : php
framework : CI ( codeigniter)
database : mysql
여러가지 블로그들과 영어 원문 등을 찾아봤지만 영어를 잘하지도 못하고 배움도 얕아서 한참 헤맸다..
chmod, chown, chcon 명령어로 권한 설정하는 것도 여러 가지 찾아보기도 하고,
/etc/nginx/nginx.conf, /etc/nginx/conf.d/default.conf, /etc/php-fpm.d/www.conf 등 파일을 수정해보기도 했다.
이 과정에서 shell_exec('whoami') 에 대한 결과가 www.conf의 user 값인 'apache'로 출력되는 것도 알 수 있었다.
네트워크 공부는 반드시 따로 시간을 내서 공부를 해야겠다.
뭐 결과적으로는 selinux 쪽에서 차단을 하고 있는걸로 확인이 되었다.
간단하게는 selinux 모드를 허용으로 바꾸어 주면 해결이 쉬웠지만.
selinux status 확인 방법 : # sestatus
selinux 현재 모드만 확인하려면 # getenforce
모드 변경하는 방법 (비활성화는 다음에 공부하고 정리할 예정)
강제 모드 : # setenforce 1
허용 모드 : # setenforce 0
selinux 보안 컨텍스트의 4가지 구성 요소
| 사용자 | 역할 | 타입 | 레벨
사용자 : system_u
역할 : object_r
타입 : httpd_sys_content_t
레벨 : s0
* selinux에 대한 자세한 내용 및 사용 방법은 글 하단 링크를 참고 부탁합니다.
급하게 찾아본 내용으로는 대충 httpd_sys_content_t 인 타입을 httpd_sys_rw_content_t로 바꾸어야 읽고 쓰기 권한을 사용할 수 있다는 것이었다.
명령어는
chcon -R -t httpd_sys_rw_content_t {path}
이렇게 하면 {path} 경로를 포함한 하위 디렉터리 및 파일들의 selinux 보안 컨텍스트를 변경할 수 있다.
-R은 모든 하위 파일들에도 적용한다는 의미.
-t는 아마 type의 t가 아닐까 예상
그런데 이렇게 하고 나서도 permission denied가 계속해서 나타나는 걸 보았다..
그러다가 chmod로 파일 권한을 주지 않은 것이 생각남.
여러 번 VM 테스트 서버를 설치해서 뒤죽박죽이었다
사용한 명령어는
chmod 757 {path}
read write가 필요한 path를 입력하여 권한을 부여함.
결과는 성공적.
리눅스 명령어 및 권한 설정, 네트워크 공부의 필요성을 아주 많이 느낀 며칠이었다..
내가 봤던 많은 에러 로그들은 대충 아래와 같았다.
더 있던 걸로 기억하지만 적어놓지 않아서 모르겠다 ㅜ
sudo : PAM account management error : system error
sudo : unable to open audit system permission denied
rm : cannot remove permission denied
급하게 작성하느라 횡설수설하지만 나 같은 사람들에게 조금이나마 도움이 되길, 또는 미래의 나에게 조금이라도 도움이 되길.
'IT' 카테고리의 다른 글
linux centos 버전 확인/커널 버전 확인/ iso 다운로드 방법 (0) | 2021.05.25 |
---|---|
Error installing fpm: git requires Ruby version >= 2.3.0 (0) | 2021.05.10 |
MySQL 날짜함수 DATE_ADD(), DATE_SUB() (0) | 2021.04.23 |
리눅스(CentOS 7)에서 해시(hash) 값 계산하는 방법 (0) | 2021.04.02 |
자바스크립트 정규식 작성 및 테스트를 위한 참고 사이트 (0) | 2021.01.06 |