6.7.6 Устранение неполадок SELinux
Устранение неполадок SELinux обычно включает переключение SELinux в разрешительный режим, повторное выполнение проблемных операций, проверку сообщений об отказе доступа в журнале аудита SELinux и возвращение SELinux в режим принудительного применения после устранения проблем.
Чтобы избежать перевода всей системы в разрешительный режим с помощью setenforce, можно разрешить работу только службе MySQL в разрешительном режиме, поместив ее домен SELinux (mysqld_t) в разрешительный режим с помощью команды semanage:
semanage permissive -a mysqld_tПо завершении устранения неполадок используйте эту команду, чтобы вернуть домен mysqld_t в режим принудительного применения:
semanage permissive -d mysqld_tSELinux записывает в /var/log/audit/audit.log логи операций с отказом доступа. Вы можете проверить отказы, поискав сообщения “denied”.
grep "denied" /var/log/audit/audit.logВ следующих разделах описаны несколько распространённых областей, где могут возникнуть проблемы, связанные с SELinux.
Контексты файлов
Если у каталога или файла MySQL неверный контекст SELinux, доступ может быть запрещён. Эта проблема может возникнуть, если MySQL настроен на чтение или запись в нестандартный каталог или файл. Например, если вы настроите MySQL на использование нестандартного каталога данных, у этого каталога может отсутствовать ожидаемый контекст SELinux.
Попытка запуска службы MySQL в нестандартном каталоге данных с недопустимым контекстом SELinux приводит к следующей ошибке запуска.
$> systemctl start mysql.service
Job for mysqld.service failed because the control process exited with error code.
See "systemctl status mysqld.service" and "journalctl -xe" for details.
В этом случае сообщение “denial” записывается в /var/log/audit/audit.log:
$> grep "denied" /var/log/audit/audit.log
type=AVC msg=audit(1587133719.786:194): avc: denied { write } for pid=7133 comm="mysqld"
name="mysql" dev="dm-0" ino=51347078 scontext=system_u:system_r:mysqld_t:s0
tcontext=unconfined_u:object_r:default_t:s0 tclass=dir permissive=0
Сведения о настройке правильного контекста SELinux для каталогов и файлов MySQL см. в разделе 6.7.4 «Контекст файлов SELinux».
Доступ к портам
SELinux ожидает, что службы, такие как MySQL Server, будут использовать определённые порты. Изменение портов без обновления политик SELinux может привести к сбою службы.
Тип порта mysqld_port_t определяет порты, на которых прослушивает MySQL. Если вы настроили MySQL Server на использование нестандартного порта, например, 3307, и не обновили политику для отражения изменения, служба MySQL не запускается:
$> systemctl start mysqld.service
Job for mysqld.service failed because the control process exited with error code.
See "systemctl status mysqld.service" and "journalctl -xe" for details.
В этом случае сообщение об отказе записывается в /var/log/audit/audit.log:
$> grep "denied" /var/log/audit/audit.log
type=AVC msg=audit(1587134375.845:198): avc: denied { name_bind } for pid=7340
comm="mysqld" src=3307 scontext=system_u:system_r:mysqld_t:s0
tcontext=system_u:object_r:unreserved_port_t:s0 tclass=tcp_socket permissive=0
Сведения о настройке правильного контекста порта SELinux для MySQL см. в разделе 6.7.5 «Контекст порта TCP SELinux». Аналогичные проблемы доступа к портам могут возникнуть при включении функций MySQL, использующих порты, не определённые с необходимым контекстом. Дополнительные сведения см. в разделе 6.7.5.2 «Настройка контекста порта TCP для функций MySQL».
Изменения в приложениях
SELinux может не знать об изменениях в приложениях. Например, новая версия, расширение приложения или новая функция могут обращаться к системным ресурсам таким образом, который не разрешён SELinux, что приведёт к отказу доступа. В таких случаях можно использовать утилиту audit2allow для создания настраиваемых политик для разрешения доступа там, где он необходим. Обычный метод создания настраиваемых политик — это изменение режима SELinux на разрешительный, определение сообщений об отказе доступа в журнале аудита SELinux и использование утилиты audit2allow для создания настраиваемых политик для разрешения доступа.
Сведения об использовании утилиты audit2allow см. в документации SELinux вашей дистрибуции.
Если у вас возникли проблемы с доступом к MySQL, которые, по вашему мнению, должны обрабатываться стандартными модулями политики SELinux MySQL, откройте отчёт об ошибке в системе отслеживания ошибок вашей дистрибуции.
© 2025 Oracle
Licensed under the GPLv2 License.