이러한 문제는 사용하는 OS 및 구성 방법에 따라 달라질 수 있습니다. 일부 Linux 배포판 (주로 CentOS 또는 Fedora와 같은 RHEL 기반)은 기본적으로 SELinux가 활성화되어 제공됩니다. 다음 명령을 사용하여이를 점검하고 임시로 변경할 수 있습니다.
root@ls:~# /usr/sbin/getenforce
Enforcing
root@ls:~# /usr/sbin/setenforce Permissive
root@ls:~# /usr/sbin/getenforce
Permissive
또한 다음을 사용하여 현재 구성에 대한보다 완전한 뷰를 가질 수 있습니다.
root@ls:~# /usr/sbin/sestatus
SELinux status: enabled
SELinuxfs mount: /selinux
Current mode: permissive
Mode from config file: enforcing
Policy version: 21
Policy from config file: targeted
이 변경은 /etc/selinux/config
파일 을 편집 하고 SELINUX
변수를 permissive
또는로 설정하여 영구적으로 만들 수 있습니다 disabled
.
그러나 실제로 이러한 상황에 처한 경우 이러한 종류의 문제를 해결하는 올바른 방법 은 /var/log/audit/audit.log
로그 파일 을 확인하는 것 입니다. SELinux 규칙과 관련된 모든 이벤트가 포함됩니다. 그러면 스크립트에 올바른 컨텍스트, 즉 apache / php 사용자가 실행할 수있는 권한을 부여해야합니다. SELinux 보안 컨텍스트 확인은 다음을 사용하여 수행됩니다 ls -Z
.
root@ls:~# ls -alZ /var/www/cgi-bin/
drwxr-xr-x root root system_u:object_r:httpd_sys_script_exec_t .
drwxr-xr-x root root system_u:object_r:httpd_sys_content_t ..
여기에는 각 파일 / 디렉토리의 사용자, 역할 및 유형이 나열됩니다. 여기서 httpd_sys_script_exec_t
형식은 cgi 디렉토리의 파일에 httpd가 실행할 권한을 부여합니다. 쉘 스크립트는 아마도 같은 유형이어야합니다.
명령 audit.log
행에 행을 공급할 수도 있습니다 audit2allow
. SELinux를 행복하게 만드는 데 필요한 변경 사항을 출력합니다. 그러나 일반적으로 제안 된 변경 사항은 SELinux 정책 자체에서 수행해야하며 이는 귀하의 경우에는 수행하지 않아야합니다 (여전히이 출력은 진행 상황에 대한 힌트를 줄 수 있습니다).
다음 페이지는 유사한 문제와이를 해결하는 다른 방법을 설명합니다. http://sheltren.com/stop-disabling-selinux
x
파일에서 실행 권한 ( )을 설정 했 습니까? shebang 행에 스크립트 인터프리터를 지정 했습니까?