Centos не загружается после отключения selinux

Обновлено: 21.11.2024

Отключая SELinux, вы удаляете этот механизм безопасности из своей системы. Это может быть проблемой, если ваша система подключена к Интернету и общедоступна. В то же время для внутренней системы за брандмауэром SELinux доставляет больше хлопот, чем он того стоит. Это несколько мешает функционированию многих демонов, и без их хорошего понимания устранение неполадок становится чрезвычайно сложным. Даже если вы хотите сохранить SElinux, вы должны временно отключить его на период устранения неполадок, чтобы исключить одну (и довольно сложную) подсистему, которая может мешать приложениям, с которыми у вас возникают проблемы.

Вы можете получить текущий статус с помощью команды

Если он отключен, результат будет таким:

Вы можете либо временно отключить SELinux, чтобы проверить проблему, либо отключить его навсегда. Также может быть лучшим вариантом внести изменения в политику, чтобы разрешить заблокированные операции, но это требует знаний о написании политик и может быть крутой кривой для некоторых людей. Для операционной системы в целом существует два вида отключения:

  • Permissive — переключить ядро ​​SELinux в режим, в котором разрешены все операции. Операции, которые были бы запрещены, разрешены, и в журнал записывается сообщение, указывающее, что они будут отклонены. Механизм, который определяет метки для файлов, которые создаются/изменяются, все еще активен.
  • Отключено — SELinux полностью отключен в ядре. Это позволяет разрешить все операции, а также отключает процесс, который решает, как помечать файлы и процессы.

Утилиты SELinux

Есть две утилиты для проверки статуса selinux:

setenforce — изменяет режим работы SELinux в режиме реального времени. При выполнении setenforce 1 SELinux переводится в принудительный режим. При выполнении setenforce 0 SELinux переводится в разрешающий режим. Чтобы фактически отключить SELinux, вам нужно либо установить параметр в /etc/sysconfig/selinux, либо передать параметр selinux=0 ядру либо в /etc/grub.conf или во время загрузки.

getenforce — получает подробный статус системы, на которой работает SELinux. Например:

Временно отключить принудительное применение

В RHEL 6 вы также можете переключить систему в разрешающий режим с помощью следующей команды:

Вам необходимо войти в систему как пользователь root и в роли sysadm_r: Чтобы вернуться в принудительный режим:

Чтобы проверить, в каком режиме находится система,

Если он отключен, результат будет таким:

который будет печатать "0" или "1" для разрешающего или принудительного выполнения - вероятно, печатается в начале строки командной строки.

Постоянно разрешен

Вышеупомянутое временно отключит принудительное применение — пока вы не перезагрузите систему. Если вы хотите, чтобы система всегда запускалась в разрешительном режиме, вот как это сделать.

В Fedora Core и RedHat Enterprise отредактируйте

и вы увидите такие строки: : . просто измените SELINUX=enforcing на SELINUX=permissive, и все готово. Перезагрузитесь, если хотите это доказать.

Для других Linux, у которых нет файла /etc/selinux/config, вам просто нужно отредактировать строку загрузки ядра, обычно в /boot/grub/grub. conf, если вы используете загрузчик GRUB. В строке ядра добавьте enforcing=0 в конце. Например,

Полное отключение SELinux

Полное отключение SELinux — это еще один шаг вперед по сравнению с простым переключением в разрешающий режим. Отключение полностью отключит все функции SELinux, включая маркировку файлов и процессов.

В Fedora Core и RedHat Enterprise отредактируйте

и измените строку SELINUX на: . а затем перезагрузите систему.

Для других Linux, у которых нет

/etc/selinux/config, вам просто нужно отредактировать строку загрузки ядра, обычно в /boot/grub/grub.conf, если вы с помощью загрузчика GRUB. В строке ядра добавьте в конце selinux=0. Например, вам придется перезагрузиться, чтобы отключить SELinux, вы просто не можете сделать это во время работы системы.

Повторное включение SELinux

Если вы отключили SELinux, как описано в предыдущем разделе, и хотите снова включить его, вам предстоит немного поработать. Проблема будет заключаться в том, что файлы, созданные или измененные, когда SELinux был отключен, не будут иметь правильных меток файлов на них - если вы просто перезагрузитесь в принудительном режиме, многие вещи не будут работать должным образом.

Что вам нужно сделать, так это включить SELinux, отредактировав /etc/selinux/config (для Fedora/RedHat) или добавив selinux=1 в загрузку ядра. строку, затем загрузитесь в разрешительный режим, затем переименуйте все, а затем перезагрузитесь (или просто переключитесь в) принудительный режим.

После загрузки в разрешающем режиме запустите fixfiles relabel

Кроме того, в Fedora и RedHat Enterprise Linux вы можете запустить touch /.autorelabel и перезагрузиться или указать autorelabel в командной строке загрузки — в обоих случаях файловая система получает полное переименование в начале процесса загрузки. Обратите внимание, что для систем с большим количеством файлов это может занять довольно много времени.

После изменения метки файловой системы вы можете переключиться в принудительный режим (см. выше), и ваша система снова должна быть полностью принудительной.

Ваш браузер не поддерживает iframe.

СОДЕРЖАНИЕ НОВОСТИ

Старые новости ;-)

Рекомендуемые ссылки

Контент, соответствующий Google

Мягкая панорама рекомендуется

Популярные статьи

Сайты

Классические книги:

Самые популярные юмористические страницы:

И последнее, но не менее важное В технологиях доминируют два типа людей: те, кто понимает то, что они не умеют делать, и те, кто управляет тем, чего не понимают ~ Арчибальд Путт. кандидат наук

УВЕДОМЛЕНИЕ О ДОБРОСОВЕСТНОМ ИСПОЛЬЗОВАНИИ Этот сайт содержит материалы, защищенные авторским правом, использование которых не всегда было специально разрешено владельцем авторских прав. Мы делаем такие материалы доступными для углубления понимания компьютерных наук, ИТ-технологий, экономических, научных и социальных вопросов. Мы считаем, что это представляет собой «добросовестное использование» любых материалов, защищенных авторским правом, в соответствии с разделом 107 Закона США об авторском праве, согласно которому такие материалы могут распространяться без получения прибыли исключительно в исследовательских и образовательных целях.

Это спартанский сайт WHYFF (Мы помогаем вам бесплатно), написанный людьми, для которых английский язык не является родным. Следует ожидать грамматических и орфографических ошибок. Сайт содержит несколько неработающих ссылок, так как он развивается как живое дерево.

Утверждения, взгляды и мнения, представленные на этой веб-странице, принадлежат автору (или указанному источнику) и не подтверждаются и не обязательно отражают мнения сообщества Softpanorama. Мы не гарантируем правильность предоставленной информации или ее пригодность для каких-либо целей. Сайт использует AdSense, поэтому вам необходимо ознакомиться с политикой конфиденциальности Google. Если вы не хотите, чтобы Google отслеживал вас, отключите Javascript для этого сайта. Этот сайт прекрасно работает без Javascript.

Недавно у нас произошел сбой питания и одновременный отказ резервного генератора, настолько серьезные, что потребовалось безопасное отключение всех серверов, поскольку их ИБП разряжались.

После создания резервной копии одного сервера CentOS 7.4.1708 (его первая «перезагрузка» за несколько месяцев, но он актуален с точки зрения обновлений CentOS) я столкнулся с кирпичной стеной, не позволяющей мне загрузить его с включенным SELinux. Я тщательно исследовал, но не могу найти доказательств того, что кто-то еще испытал это, и я не знаю, что делать дальше. Я надеюсь, что кто-то здесь может предложить некоторые идеи.

Вот хронология:

Сбой загрузки из-за того, что несколько служб не запускаются:

Из-за этого я перезагрузился с selinux=0 в grub

Это работает и запускает систему, но с отключенным SELinux, что для нас неприемлемо, кроме временного обходного пути

Загрузка не удалась из-за:

Снова перезагрузился с selinux=0 в grub

Нашел больше советов, выполненных таким образом:

и установите разрешение в /etc/selinux/config

Видел следующий баннер:

но вместо фактического переименования система немедленно перезагрузилась — слишком быстро, чтобы увидеть какие-либо другие результаты

Загрузка снова не удалась с исходной ошибкой.

Итак, мы снова здесь. И я вижу, что /.autorelabel все еще существует, предполагая, что переименование не произошло. Меня удивляет, что мы вернулись к исходной точке с ошибками.

Также помните, что SELinux по-прежнему находится в разрешительном, а не принудительном режиме.

Конечным результатом является то, что я застрял, не имея возможности включить SELinux ни в разрешающем, ни в принудительном режиме, что не нормально.

Как мне поступить?

Не могли бы вы добавить некоторые подробности о том, какой это тип файловой системы и что вы сделали для проверки файловой системы, когда SELinux отключен?

@MichaelHampton: Как? Я просмотрел boot.log, но не смог найти то, что видел на экране. Возможно, я посмотрю поближе.

Для просмотра журнала необходимо использовать journalctl, если только у вас не запущен демон системного журнала, который также записывает журнал в текстовый файл. Попробуйте что-то вроде -b 2 или -b 3 или сколько раз назад произошла ошибка при загрузке.

5 ответов 5

tl;dr: Все сводилось к недопустимому значению для SELINUXTYPE .

Убедитесь, что SELINUXTYPE имеет допустимое значение, затем при необходимости выполните переименование (например, если вы загрузились с отключенным SELinux во время диагностики), перезагрузите компьютер и откройте шампанское.

По какой-то причине и в какой-то момент времени файл /etc/selinux/config получил параметр SELINUXTYPE=permissive .

Это недопустимый вариант для этого параметра, и, по-видимому, значение возвращается к значению "по умолчанию" в зависимости от указанной причины сбоя Dbus, службы входа в систему и диспетчера авторизации:

Это проблематично, потому что в CentOS 7 нет пакета selinux-policy-default (например, в Debian он был намеренно удален в Jessie, поэтому я полагаю, что здесь то же самое).

Я подозреваю, что именно поэтому попытки перемаркировать файловую систему с помощью restorecon (из однопользовательского режима и из оболочки, доступной с помощью init=/sbin/sh ) приводили к сбивающим с толку выводам «Нет такого файла или каталога» и getenforce по-прежнему будет показывать «Отключено» без видимой причины.

Чтобы переключиться на selinux-policy-targeted материал, который установлен, я исправил конфигурацию как SELINUXTYPE=targeted (как я полагаю, так должно было быть всегда), а затем снова перезагрузился с принудительным =0 авторелейбл=1 .

Затем произошла перемаркировка. После этого система загрузилась как обычно.

Я пытаюсь установить SELinux на Ubuntu 18.04, но после выполнения следующих команд Ubuntu не загружается.

3 ответа 3

Для этого есть постоянное исправление. Вам просто нужно нажать Shift, чтобы загрузиться в режиме восстановления, затем перейти к терминалу, затем поставить disabled=1, затем возобновить загрузку без перезагрузки, затем перейти в /etc/selinux, затем перейти к конфигурации файл, затем выбор по умолчанию: вместо selinux=enforcing выберите selinux=disabled. Ну вот, ваша машина снова загрузилась!

У меня была похожая проблема. Чтобы загрузить машину, я остановил GRUB и отредактировал загрузочную запись Ubuntu (нажмите e ) и временно удалил SELinux из аргументов загрузки, как объяснил @poige в своем ответе.

Поскольку AppArmor и SELinux конфликтуют, я предлагаю эту процедуру, чтобы отключить apparmor и установить дополнительные пакеты SELinux:

Удалите apparmor из вашей системы

Перезагрузитесь (если вы снова застряли в загрузке, отредактируйте запись GRUB для загрузки)

Установите SELinux с некоторыми вспомогательными пакетами:

  • Примечание. После перезагрузки системы SELinux должен быть включен, но в разрешительном режиме. Разрешающий режим означает, что любые действия, которые были бы запрещены, разрешены, но регистрируются в журнале аудита вашей системы, расположенном в файле /var/log/audit/audit.log.

После перезагрузки убедитесь, что selinux установлен:

Теперь вы сможете поиграть с SELinux и изменить его настройки, чтобы получить желаемый уровень безопасности. Подробнее об этом см. в разделе Установка SELinux в Ubuntu 18.04.

Плохо то, что Ubuntu — плохой выбор для игры с SELinux — вместо этого они любят Apparmor (который не дотягивает до уровня SELinux с совершенно другим подходом, но это уже другая история).

Проблему, с которой вы столкнулись, легко решить (это хорошо):

  • Во время загрузки вам нужно открыть меню GRUB и отредактировать параметр ядра, который обеспечивает использование SELinux: selinux=1 .
  • Сбросьте его с помощью …=0 (IOW, заменив 1 на 0) и продолжите загрузку.

На этом этапе система должна быть успешно загружена, но это еще не все.

— Пришло время поставить долговременный фикс. Может быть удалить SELinux? :) Хотя может и не хватить. Оформить заказ /etc/default/grub с помощью sudo …YourEditor… и если вы там увидите

Это краткий пост о том, как навсегда отключить SELinux в CentOS 8.

Содержание:

Что такое SELinux? :

SELinux (Security-Enhanced Linux) – это модуль ядра Linux, предоставляющий механизм для применения политик безопасности управления доступом, включая MAC (обязательный контроль доступа).

SELinux добавляет еще один уровень безопасности на сервер Linux, позволяя системным администраторам контролировать доступ к объектам операционной системы на основе политик, основанных на правилах.

В операционной системе CentOS 8 SELinux по умолчанию работает в принудительном режиме с целевой политикой.

Не рекомендуется отключать SELinux, но бывают ситуации, когда необходимо отключить его явно. Например, когда мы устанавливаем программное обеспечение, которое не поддерживает SELinux.

Режимы работы SELinux:

SELinux имеет три режима работы.

  • Принудительное: это режим по умолчанию. Доступ предоставляется на основе политик SELinux.
  • Разрешающий: в этом режиме SELinux не ограничивает доступ ни к каким объектам.Кроме того, он регистрирует только нарушения политик SELinux. Этот режим удобен для целей отладки.
  • Отключено: ни политика SELinux не применяется, ни сообщения не регистрируются.

Возможности SELinux:

Некоторые функции SELinux.

  • Четко определенные интерфейсы политик
  • Поддержка приложений, запрашивающих политику и обеспечивающих контроль доступа (например, выполнение заданий crond в правильном контексте)
  • Отдельные метки и элементы управления для объектов и служб ядра
  • Отдельные меры для защиты целостности системы (тип домена) и конфиденциальности данных (многоуровневая безопасность)
  • Управление инициализацией и наследованием процессов, а также выполнением программы
  • Управление файловыми системами, каталогами, файлами и дескрипторами открытых файлов.
  • Управление сокетами, сообщениями и сетевыми интерфейсами
  • Политика запрета по умолчанию (запрещается все, что явно не указано в политике)

Проверьте состояние SELinux в CentOS 8:

SELinux по умолчанию включен во всех установках операционной системы CentOS 8. Но ее может явно отключить системный администратор.

Мы можем запустить команду getenforce, чтобы проверить текущий режим SELinux.

Чтобы проверить подробный статус SELinux на сервере, мы можем использовать следующую команду Linux.

Временно установите режим SELinux в CentOS 8:

Мы можем временно (до следующей перезагрузки системы) переключать режимы SELinux между принудительным и разрешающим.

Разрешающий режим удобен для создания журналов нарушений безопасности SELinux для создания пользовательской политики SELinux.

Разрешающий режим также полезен для проверки того, блокирует ли SELinux доступ к нашим процессам или файлам в принудительном режиме (например, мы настроили веб-сервер Apache на пользовательский порт, и он не работает).

Следующая команда Linux используется для изменения режима SELinux на разрешающий.

Проверьте текущий режим SELinux еще раз.

Снова измените режим SELinux на принудительный.

Постоянно установить режим SELinux в CentOS 8:

Если нам требуется постоянно устанавливать разрешающий режим SELinux, мы также должны установить его в файле конфигурации SELinux. Таким образом, при следующей загрузке SELinux запустится в разрешительном режиме.

Навсегда отключить SELinux в CentOS 8:

Невозможно временно отключить SELinux во время работы сервера CentOS. Мы должны отключить SELinux через его файл конфигурации, чтобы при следующей перезагрузке системы SELinux больше не включался.

Читайте также: