
У меня есть экземпляр VirtualBox Oracle Linux 7.2, который не запускается из-за Failed to start Login Service
. В процессе загрузки процесс зависает на этом сообщении и не продолжается, поэтому я даже не могу войти в систему и выполнить systemctl status systemd-logind.service
.
Вероятная причина этого в том, что я удалил zsh, в то время как все мои пользователи (включая root) установили zsh в качестве оболочки по умолчанию (ну да!). После этого машина запустилась, и я получил приглашение на вход, но не смог войти, так как оболочка не была найдена. Затем я вставил Live CD и зашел, /etc/passwd
чтобы изменить оболочку по умолчанию для пользователей на /bin/bash
. После этого служба входа вообще не запускается. Есть идеи, как это исправить?
решение1
Я обнаружил, что после изменения /etc/passwd
у него больше не было правильных настроек SELinux. Мне на самом деле не нужен SELinux на моей машине, поэтому я решил проблему, полностью отключив SELinux. Это легко сделать, изменив файл /etc/selinux/config
и установив опцию SELINUX=permissive
(если вы хотите сохранить маркировку файлов SELinux, чтобы включить ее позже) или SELINUX=disabled
(полностью отключить ее).
решение2
Я столкнулся с этим сегодня с CentOS 7.2 на VirtualBox. Я смог ssh
войти как обычный пользователь и выдал
touch /.autorelabel
Затем перезагрузил, чтобы сбросить все контексты. Загрузка занимает некоторое время, но сработало.
решение3
После использования chage
в однопользовательском режиме из-за истечения срока действия пароля необходимо выполнить загрузку с SELINUX=permissive
установленными настройками /etc/selinux/config
для восстановления правильных меток.
Получите правильный контекст SELinux для каждого измененного файла из исправной системы ls -Z /etc/passwd /etc/shadow
и примените контекст обратно к сломанной системе.
Какпример, вот набор команд, используемых в CentOS 7 после chage
-НЕ ПРИМЕНЯТЬбез сравнения с нормальной системой (тестовой или предпроизводственной)!
chcon system_u:object_r:passwd_file_t:s0 /etc/passwd
chcon system_u:object_r:passwd_file_t:s0 /etc/group
chcon system_u:object_r:shadow_t:s0 /etc/shadow
chcon system_u:object_r:shadow_t:s0 /etc/gshadow
Просмотрите контекст SELinux любого файла, который вы изменили в одиночном режиме, прежде чем перезагружать систему, SELINUX=enforcing
чтобы вернуться к нормальной работе.
Другие способы копирования контекста SELinux доступны по адресуКак скопировать контекст SELinux из одного каталога и применить его к другому каталогу?