無法登入:無法啟動登入服務

無法登入:無法啟動登入服務

我有一個 Oracle Linux 7.2 的 VirtualBox 實例,由於Failed to start Login Service.在啟動序列中,進程掛起此訊息並且不會繼續,因此我什至無法登入並執行systemctl status systemd-logind.service.

造成這種情況的可能原因是,我刪除了 zsh,而我的所有使用者(包括 root)都將 zsh 設定為預設 shell(廢話!)。之後機器啟動並出現登入提示,但由於找不到 shell,我無法登入。然後我插入了一張 Live CD 並進入/etc/passwd將用戶的預設 shell 更改為/bin/bash.此後登入服務將根本不會啟動。任何想法如何解決這個問題?

答案1

我發現更改後/etc/passwd它不再具有正確的 SELinux 設定。我的機器上並不需要 SELinux,所以我透過完全停用 SELinux 解決了這個問題。透過修改檔案/etc/selinux/config和設定選項SELINUX=permissive(如果您想保留 SELinux 檔案標籤以便稍後啟用它)或SELINUX=disabled(完全關閉它)可以輕鬆完成此操作。

答案2

我今天在 VirtualBox 上使用 CentOS 7.2 時遇到了這個問題。我能夠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=enforcing在重新啟動以恢復正常操作之前,請檢查您在單一模式下修改的任何檔案的 SELinux 上下文。

複製 SELinux 上下文的其他方法可在如何從一個目錄複製 SELinux 上下文並將其套用到另一個目錄?

相關內容