다음은 SELinux 사례에 대한 자습서 접근 방식입니다.
SELinux가 활성화되어 있는지 확인하십시오.
$ sestatus
SELinux status: enabled
SELinuxfs mount: /selinux
Current mode: enforcing
Mode from config file: enforcing
Policy version: 24
Policy from config file: targeted
그렇다면 일부 비교 검사가 도움이 될 수 있습니다. 예를 들어 서버의 기본 DocumentRoot는 /var/www/html
에 있지만 다른 곳에서는 원합니다 /path/to/document/root
.
SELinux가 자원을 적극적으로 망쳐 놓지 않으면 ls -dZ
디렉토리에 다음과 같이 표시됩니다.
$ ls -dZ /path/to/document/root
? /path/to/document/root/
반면에 SELinux 컨텍스트가 적용되면 ls -dZ
다음과 같습니다.
$ ls -dZ /path/to/document/root
drwxrws--x+ cfgadm cfgadmin system_u:object_r:file_t:s0 /path/to/document/root
작동하는 DocumentRoot와 비교하면 다음과 같습니다.
$ ls -dZ /var/www/html
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /var/www/html
_r
와 _t
관련 -r
( --role
및 -t
( --type
인수) chcon
여기에 컷 다운 사람의 페이지입니다. :
NAME
chcon - change file security context
SYNOPSIS
chcon [OPTION]... CONTEXT FILE...
chcon [OPTION]... [-u USER] [-r ROLE] [-l RANGE] [-t TYPE] FILE...
chcon [OPTION]... --reference=RFILE FILE...
DESCRIPTION
Change the security context of each FILE to CONTEXT. With --reference,
change the security context of each FILE to that of RFILE.
--reference=RFILE
use RFILE's security context rather than specifying a CONTEXT value
-R, --recursive
operate on files and directories recursively
처음에는 다음과 같이 작동하지만 보이지 않을 수 있습니다.
$ sudo chcon -R -t httpd_sys_content_t /path/to/document/root
웹 서버가 여전히 DocumentRoot를 볼 수없는 경우 컨텍스트는 루트로 거슬러 올라갑니다.
$ sudo chcon -R -t httpd_sys_content_t /path/to/document
$ sudo chcon -R -t httpd_sys_content_t /path/to
$ sudo chcon -R -t httpd_sys_content_t /path
이 시점에서 웹 서버는 디렉토리를 볼 수 있습니다.
네, 오늘 밤 어려운 길을 배웠습니다.
참고 : chcon 사용은 개념적으로 RedHat 문서 ( 5.6.1. 임시 변경 : chcon )에 따라 다음과 같은 단점 이 있습니다.
The chcon command changes the SELinux context for files. However, changes
made with the chcon command do not survive a file system relabel, or the
execution of the restorecon command.
보다 영구적으로 변경 하려면 semanage 및 restorecon 을 사용하십시오 . 간단한 예 :
$ sudo semanage fcontext --add -t httpd_sys_content_t -s system_u \
"/path/to/document/root(/.*)?"
$ sudo restorecon -FR /path/to/document/root
에 관해서 restorecon , 참고 -F가 필요합니다 전체 컨텍스트 (즉, 사용자와 유형)에 영향을 줄 수 있습니다. 또한 -R 은 재귀 적으로 변경하는 것을 의미합니다. 인수 -v 또는 -p 는 자세한 방식 또는 간결한 방식으로 진행 상황을 표시 할 수 있습니다. 실제로 변경하지 않고 어떤 일이 발생하는지 보려면 -FRnv 를 사용하십시오 .
이러한 방식으로 semanage 를 사용 하면 다음 과 같은 명령으로 로컬 보안 변경 사항을 볼 수 있습니다.
$ sudo semanage export
의미 체계 내보내기 의 출력은 의미 체계 가져 오기 에 의해 저장되고 사용되어 다양한 시스템에 일련의 변경 사항을 쉽게 적용 할 수 있습니다.
참고 :이 답변은 사이트에 대한 가장 기본적인 유형 컨텍스트를 제공합니다. 보안은 훨씬 세분화 될 수 있습니다. 예를 들어, 다음과 같은 명령을 사용하여 웹 서버 페이지에 적용 할 수있는 유형 목록을 참조하십시오.
$ seinfo -t | grep http
참고 : semanage 및 seinfo 와 같은 유틸리티 는 기본적으로 설치되지 않을 수 있습니다. 최소한 일부 배포판에서 필요한 패키지의 이름은 다음과 같습니다.
policycoreutils-python
setools-console
DocumentRoot
하여 웹 서버에 표시되는 내용에 대한 통찰력을 얻을 수 있는지 확인하십시오. 당신은 또한 경로를 따라 다른 디렉토리를 확인하고 싶을 수도 있지만, 만약 실제로/var/www/
그 아래에 있다면 문제가되지 않아야합니다