Loading...
MySQL 9.5 Reference Manual 9.5의 8.7.4 SELinux File Context의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
MySQL Server는 많은 파일에 대해 읽기 및 쓰기 작업을 수행합니다. 이러한 파일들에 대해 SELinux 컨텍스트가 올바르게 설정되어 있지 않으면 파일에 대한 접근이 거부될 수 있습니다.
다음에 나오는 지침에서는 semanage 바이너리를 사용하여 파일 컨텍스트를 관리합니다. RHEL에서는 policycoreutils-python-utils 패키지에 포함되어 있습니다:
1yum install -y policycoreutils-python-utils
semanage 바이너리를 설치한 후에는 fcontext 옵션과 함께 semanage를 사용하여 MySQL 파일 컨텍스트를 나열할 수 있습니다.
1semanage fcontext -l | grep -i mysql
기본 데이터 디렉터리 위치는 /var/lib/mysql/이며, 사용되는 SELinux 컨텍스트는 mysqld_db_t입니다.
구성 파일을 편집하여 데이터 디렉터리의 위치나, 데이터 디렉터리에 일반적으로 존재하는 파일들(예: 바이너리 로그)에 대해 다른 위치를 사용하도록 변경한 경우, 새 위치에 대한 컨텍스트를 설정해야 할 수 있습니다. 예를 들면 다음과 같습니다:
1semanage fcontext -a -t mysqld_db_t "/path/to/my/custom/datadir(/.*)?" 2restorecon -Rv /path/to/my/custom/datadir 3 4semanage fcontext -a -t mysqld_db_t "/path/to/my/custom/logdir(/.*)?" 5restorecon -Rv /path/to/my/custom/logdir
RedHat RPM의 기본 위치는 /var/log/mysqld.log이며, 사용되는 SELinux 컨텍스트 타입은 mysqld_log_t입니다.
구성 파일을 편집하여 다른 위치를 사용하도록 한 경우, 새 위치에 대한 컨텍스트를 설정해야 할 수 있습니다. 예를 들면 다음과 같습니다:
1semanage fcontext -a -t mysqld_log_t "/path/to/my/custom/error.log" 2restorecon -Rv /path/to/my/custom/error.log
PID 파일의 기본 위치는 /var/run/mysqld/mysqld.pid이며, 사용되는 SELinux 컨텍스트 타입은 mysqld_var_run_t입니다.
구성 파일을 편집하여 다른 위치를 사용하도록 한 경우, 새 위치에 대한 컨텍스트를 설정해야 할 수 있습니다. 예를 들면 다음과 같습니다:
1semanage fcontext -a -t mysqld_var_run_t "/path/to/my/custom/pidfile/directory/.*?" 2restorecon -Rv /path/to/my/custom/pidfile/directory
유닉스 도메인 소켓의 기본 위치는 /var/lib/mysql/mysql.sock이며, 사용되는 SELinux 컨텍스트 타입은 mysqld_var_run_t입니다.
구성 파일을 편집하여 다른 위치를 사용하도록 한 경우, 새 위치에 대한 컨텍스트를 설정해야 할 수 있습니다. 예를 들면 다음과 같습니다:
1semanage fcontext -a -t mysqld_var_run_t "/path/to/my/custom/mysql\.sock" 2restorecon -Rv /path/to/my/custom/mysql.sock
MySQL 5.6.34, 5.7.16, 8.0.11 이후 버전에 해당합니다.
MySQL Server RPM을 설치하면 /var/lib/mysql-files/ 디렉터리가 생성되지만, 해당 디렉터리에 대한 SELinux 컨텍스트는 설정되지 않습니다. /var/lib/mysql-files/ 디렉터리는 SELECT ... INTO OUTFILE과 같은 작업에 사용하기 위한 용도입니다.
secure_file_priv를 설정하여 이 디렉터리 사용을 활성화한 경우, 다음과 같이 컨텍스트를 설정해야 할 수 있습니다:
1semanage fcontext -a -t mysqld_db_t "/var/lib/mysql-files/(/.*)?" 2restorecon -Rv /var/lib/mysql-files
다른 위치를 사용했다면 이 경로를 수정하십시오. 보안상의 이유로 이 디렉터리는 데이터 디렉터리 내부에 있어서는 안 됩니다.
이 변수에 대한 자세한 내용은 secure_file_priv 문서를 참조하십시오.
8.7.3 MySQL Server SELinux Policies
8.7.5 SELinux TCP Port Context