Назад | Перейти на главную страницу

Проблема с разрешениями Selinux / MySQL на новом диске iSCSI: недопустимый контекст default_t

У меня установлен и запущен сервер с MySQL, а также подключен диск iSCSI (с несколькими путями), который работает нормально. Диск iSCSI использует / emc в качестве точки монтирования. Моя проблема заключается в том, что я перемещаю каталог данных MySQL в новый каталог на диске iSCSI, то есть в / emc / lib / mysql.

Миграция в порядке, потому что, если я остановлю selinux (setenforce 0), все будет работать нормально; но когда я перезапускаю selinux (setenforce 1), MySQL не может получить доступ к своим базам данных.

Я установил и запустил setroubleshootd, который дает мне информацию об ошибке: / emc имеет контекст по умолчанию default_t, поэтому все файлы ander / emc, включая мой новый / emc / lib / mysql, имеют этот контекст, а это не разрешается.

Копирование файлов из / var / lib / mysql в / emc / lib / mysql с использованием параметров -p и -Z не работало.

После прочтения отчетов из sealert -l я настроил систему на регенерацию меток:

touch /.autorelabel
reboot

Но это не сработало. Я думаю, что это могло произойти из-за того, что новый диск - это iSCSI, и он автоматически монтируется, когда сеть работает, и, возможно, selinux пытается автоматически переназначить новые диски до того, как сеть будет запущена, поэтому selinux «не видит» новый диск. Строка fstab:

/dev/mapper/DATAp1     /emc                    ext3    _netdev         0 0

Я попытался смонтировать диск iSCSI, добавив контекст в fstab:

/dev/mapper/DATAp1    /emc                    ext3    _netdev,context=system_u:object_r:var_t:s0              0 0

Но это не сработало.

Я пробовал различные команды для восстановления и регенерации контекстов, но безуспешно:

restorecon -R -v /emc
fixfiles restore

Как я могу установить новую метку диска / контекст по умолчанию? Или кто я могу сохранить контексты при копировании каталога данных MySQL?

Спасибо большое, ребята!

Вы добавляете политику перед запуском restorecon? Если нет, то restorecon может отменять изменения вашего контекста. Пытаться:

semanage fcontext -a -t mysql_db_t "/emc/lib/mysql(/.*)?"
restorecon -Rv /emc/lib/mysql

Ваше решение для запуска setsebool –P mysqld_disable_trans 1 эффективно отключает selinux для mysql.

Я думаю, что нашел решение, которое подразумевает Логические значения SElinux. Достаточно просто установить (активировать) два логических значения:

# setsebool –P mysqld_disable_trans 1
# setsebool –P httpd_can_network_connect_db 1

После этого просто перезагружаем обе службы и все работает.

Параметр -P устанавливает его навсегда. Вы можете увидеть список логических значений и их статус с помощью:

# getsebool -a

Возможно, это поможет другим решить аналогичную проблему.

Изменить: как вы думаете, это хорошее и безопасное решение? есть ли другие способы сделать трюк? Я оставлю вопрос без ответа, поэтому могу отметить его, если кто-нибудь знает другое лучшее решение