Linux

SELinux로 인해 발생하는 서비스 실행 오류 해결 방법

로아다 2025. 3. 13. 11:30
728x90
반응형

Linux 환경에서 httpd 또는 특정 서비스가 SELinux 보안 정책으로 인해 실행되지 않는 경우, 다음과 같은 오류가 발생할 수 있다.

SELinux is preventing /usr/sbin/httpd from write access on the file /var/log/httpd

이 문제는 SELinux가 보안 정책을 강제하면서 서비스의 특정 작업을 차단하기 때문에 발생한다.


해결 방법

SELinux 정책을 수정하여 해당 서비스가 정상적으로 동작할 수 있도록 설정해야 한다.

1️⃣ SELinux 상태 확인

현재 SELinux의 동작 상태를 확인하려면 다음 명령어를 실행한다.

sestatus

출력 결과가 Enforcing이면 SELinux가 활성화되어 있는 상태이다.

2️⃣ 일시적으로 SELinux 비활성화

SELinux를 즉시 비활성화하고 서비스가 정상적으로 실행되는지 확인할 수 있다. (재부팅 후 다시 활성화됨)

setenforce 0

비활성화된 상태를 다시 Enforcing으로 변경하려면:

setenforce 1

3️⃣ 영구적으로 SELinux 비활성화

완전히 비활성화하려면 SELinux 설정 파일을 수정해야 한다.

sudo vi /etc/selinux/config

파일에서 SELINUX=enforcing을 다음과 같이 변경한다.

SELINUX=disabled

파일을 저장한 후 시스템을 재부팅한다.

reboot

4️⃣ SELinux 정책 수정하여 특정 서비스 허용

SELinux를 비활성화하지 않고 특정 서비스가 정상적으로 실행되도록 허용하는 방법이다.

  1. SELinux 로그를 확인하여 필요한 정책을 생성한다.
ausearch -c 'httpd' --raw | audit2allow -M my-httpd
  1. 생성된 정책을 적용한다.
semodule -i my-httpd.pp

이후 서비스를 다시 시작하면 정상적으로 동작할 것이다.

systemctl restart httpd

5️⃣ SELinux 보안 컨텍스트 수정

파일이나 디렉토리의 보안 컨텍스트를 변경하여 SELinux에서 허용할 수도 있다.

restorecon -Rv /var/www/html

이 명령어는 httpd가 접근해야 하는 파일의 보안 컨텍스트를 기본값으로 복원한다.


결론

SELinux는 보안 강화를 위한 기능이지만, 특정 서비스 실행을 차단하는 경우가 있다. 이 문제를 해결하려면 일시적으로 비활성화, 영구적으로 비활성화, SELinux 정책 수정, 보안 컨텍스트 변경 등의 방법을 활용하면 된다.

728x90
반응형