SELinux sıfırlama kök şifresi


12

Yasal Uyarı: Bu soru, SELinux etkinken kök parolasını değiştirme sorununu çözmek değildir, çünkü bunu çözmek için çok sayıda kılavuz vardır. Bu SELinux'un bunu dahili olarak nasıl yaptığından daha fazlası.

Son zamanlarda SELinux kullanıcısıyım ama son zamanlarda onunla daha fazla iletişim kurdum. Birisi bana unutması durumunda root şifresini nasıl sıfırlayabileceğimi sorduğunda bir an vardı.

Bu yüzden CentOS'umu başlattım, grub girişini

linux16 <kernel_location> root=/dev/mapper/centos-root rw init=/bin/bash

Koştum passwdve sonra koştum syncve yeniden başlatmaya zorladım. Yeniden başlattıktan sonra, eski şifrenin yanı sıra yeni şifre ile giriş yapılması reddedildi.

Yeniden başlatıldı ve SELinux ( selinux=0) işlevini devre dışı bırakmak için çekirdeği parametreden geçirdi . Yeni şifre ile giriş yapmayı denedim ve çalıştı. Daha sonra bir fs otomatik yeniden etiketlemesini (dosya üzerinden .autorelabel) zorladım ve SELinux aktifken şimdi oturum açmak mümkün oldu.

Sorum şu: neden oluyor? Yeniden etiketleme, kullanıcılar veya nesneler için değil, yalnızca şifre değişikliği olduğunda oturum açmayı neden etkiler?

İlginiz için teşekkür ederim.

TL; DR: Normal kök parola sıfırlaması SELinux'da çalışmaz. Neden?

Düzenleme: Bu, hipervizör olarak KVM ile CentOS7 çalıştıran bir sanal makinede test edildi.


1
Çalışmadığından emin misiniz? Tekrar dene. Muhtemelen iyi çalışacaktır. Bazı dosyalarda yanlış dosya bağlamları olduğundan şüpheleniyorum, tüm girişlerin başarısız olmasına neden oluyor. Böylece otomatik etiketleme sorunu gerçekten düzeltti.
Michael Hampton

@MichaelHampton Tüm adımlarımı tekrar yaptım ve SELinux aktif ile tekrar giriş yapamadım. Devre dışı bıraktıktan sonra sorunsuz bir şekilde giriş yapabilirim. Yanılıyorsam beni düzeltin ama bir parolayı değiştirmek dosya içeriğini değiştirmemeli mi?
Jorge Heleno

1
Hayır olmamalı. Tuhaf ve beklenmedik bir şey keşfetmişsiniz gibi görünüyor.
Michael Hampton

Yanıtlar:


17

Bu sorunu yeni yüklenen bir CentOS 7.5 sisteminde çoğaltabildim.

İşte olanlar:

İle önyükleme yaparken karşılaşabileceğiniz init=/bin/bashiki sorun vardır:

  • Kök dosya sistemi salt okunur olarak monte edilebilir. Bu durumda passwdbir Authentication token manipulation error.

    Bu oldukça açıktır: Eğer dosya sistemi okuma-yazma üzerine monte edilmemişse, ona yazmak mümkün değildir.

  • SELinux ilkesi yüklenmemiş olabilir. Bu durumda passwdşifreyi başarıyla değiştirir, ancak yukarıdaki orijinal soruda açıklanan sorunu yaşarsınız: kimse giriş yapamaz.

    Parola karmaları /etc/shadowdosyada saklanır . Bu dosya normalde SELinux tipindedir shadow_t. Ancak, hiçbir SELinux ilkesi yüklenmemişken dosyanın değiştirilmesi, SELinux türünün dosyadan kaldırılmasına neden olur unlabeled_t. Böylece, oturum açma kimlik doğrulaması için dosyayı okumaya çalışan hizmetler artık okuyamaz.

RHEL / CentOS 7'de kök parolayı değiştirmek için, bu işlemi izlemeniz gerekir:

  1. init=/bin/bashDaha önce yaptığınız gibi grub içindeki çekirdek komut satırının sonuna ekleyin .
  2. Bash istemine SELinux ilkesini yükleyin /usr/sbin/load_policy -i.
  3. Kök dosya sistemini okuma-yazma ile bağlayın mount -o remount,rw /.
  4. Şimdi şifreyi değiştirdiğinizde başarılı olur. passwd root
  5. Değişiklikleri yürütmek ve sonraki önyüklemede temiz bir dosya sistemine sahip olmak için dosya sistemini salt okunur olarak yeniden takın mount -o remount,ro /.
  6. Kabuktan çıkın veya sistemi ile yeniden başlatın exec /sbin/init 6.

Şimdi değiştirilmiş root şifresi ile giriş yapabilirsiniz.

Bir bu prosedürün uzun bir açıklaması Red Hat (abonelik gereklidir) edinilebilir.


Sorun yüklenmemiş olan politikalarla ilgiliydi. Neden yüklenmiyorlar? SELinux çekirdek seviyesinde çalışmalı, böylece init sistemine gerek kalmamalıdır.
Jorge Heleno

4
@JorgeHeleno SELinux, çekirdek başladığında varsayılan olarak açık veya kapalıdır, ancak kullanıcı alanı hangi politikaların yüklendiğine karar vermekten sorumludur. Çekirdek buna karar veremedi, çünkü bazı kurulumlar farklı politikalar isteyebilir (ör. Hedefli, katı, mls). Bu, önyükleme işleminin başlarında gerçekleşir, ancak çalıştırdığınızda bunu atlarsınız init=/bin/bash.
Michael Hampton

1
bir politika yüklenmezse neden passwd"başarılı görünüyor"?
Andrew Savinykh

ve başarılı olmadıysa, neden eski şifreyle giriş yapma hala başarısız oldu?
Yörüngedeki Hafiflik Yarışları

2
@Jorge Helen: Açıklamanız neredeyse tamamlandı. Nokta tarafından değiştirilmiş dosyalar passwdyani /etc/passwdve /etc/shadow. passwdYüklenen ilke olmadan çalışıyorsa , uygun selinux bağlamında çalışmaz ve değiştirilen dosyalar farklı bir selinux bağlamıyla sonuçlanır. Selinux etkinken ve politikalar etkinken önyükleme yaparken, şifre kontrolü hata nedeniyle değil, uygunsuz dosya bağlamı nedeniyle başarısız olur wrong password. Selinux'u dokunarak yeniden doldurulabilir dosya içeriklerine zorlamak /.autorelabel, yüklü politika olmadan şifreleri değiştirirken de bu sorunu çözebilir.
hargut
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.