Failed to start Login Service
のために起動しないOracle Linux 7.2のVirtualBoxインスタンスを持っています。ブートシーケンスでプロセスがこのメッセージでハングし、続行しないため、ログインしてsystemctl status systemd-logind.service
を実行することさえできません。
これの考えられる原因は、すべてのユーザー(rootを含む)がデフォルトのシェル(duh!)としてzshを設定している間にzshを削除したことです。その後、マシンが起動してログインプロンプトが表示されましたが、シェルが見つからなかったためログインできませんでした。次に、Live CDを挿入して/etc/passwd
に移動し、ユーザーのデフォルトのシェルを/bin/bash
に変更しました。この後、ログインサービスはまったく開始されません。これを修正する方法はありますか?
/etc/passwd
を変更した後、適切なSELinux設定がもうないことがわかりました。私のマシンにはSELinuxは本当に必要ないので、SELinuxを完全に無効にすることで問題を解決しました。これは、ファイル/etc/selinux/config
を変更し、オプションSELINUX=permissive
(SELinuxファイルのラベル付けを保持して後で有効にする場合)またはSELINUX=disabled
(完全にオフにする)を設定することで簡単に実行できます。
パスワードが期限切れのためにchage
をシングルユーザーモードで使用した後、適切なラベルを復元するには、SELINUX=permissive
を/etc/selinux/config
に設定して起動する必要があります。
ls -Z /etc/passwd /etc/shadow
を使用して、正常なシステムから変更されたファイルごとに適切なSELinuxコンテキストを取得し、コンテキストを壊れたシステムに戻します。
例として、CentOS 7でchage
-DOの後に使用されるコマンドのセットを次に示します適切なシステム(テストまたはプリプロダクション)からの比較なしでは適用されません!
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コンテキストをコピーする他の方法は 1つのディレクトリからSELinuxコンテキストをコピーして別のディレクトリに適用する方法? で利用できます。
今日、VirtualBoxのCentOS 7.2でこれに遭遇しました。通常のユーザーとしてssh
を使用して発行することができました
touch /.autorelabel
その後、すべてのコンテキストをリセットするために再起動しました。起動には少し時間がかかりますが、うまくいきました。