sunucu.com.tr
Linux Sunucular

Linux root şifresi sıfırlama: Rocky Linux, AlmaLinux, Ubuntu ve CentOS 7'de konsoldan adım adım

Root şifresini unuttunuz ve SSH ile giremiyor musunuz? Rocky Linux ve AlmaLinux'ta init=/bin/sh ile rd.break yöntemini, Ubuntu'da kurtarma modunu, CentOS 7 için notları, SELinux yeniden etiketlemeyi ve konsol erişimi şartını adım adım anlatıyoruz.

Güncellendi: 9 dk okuma

Root şifresini unuttuğunuzda sunucuyu yeniden kurmanıza gerek yok. Önyükleme sırasında araya girip kısa süreli bir root kabuğu açabilir, şifreyi orada değiştirebilir ve sistemi normal şekilde yeniden başlatabilirsiniz. Bu rehber önce yalnız CentOS 7 için yazılmıştı. CentOS Linux 7 ömrünü tamamladığı için kapsamı genişlettik: Rocky Linux ve AlmaLinux gibi RHEL tabanlı dağıtımları, Ubuntu'yu ve hâlâ CentOS 7 çalıştıran sistemleri ayrı ayrı ele alıyoruz.

Başlamadan önce: konsol erişimi şart

Bu yöntemlerin hiçbiri SSH üzerinden çalışmaz. Şifreyi sıfırlamak için önyükleyiciyi (GRUB) ekranda görmeniz ve klavyeyle müdahale etmeniz gerekir. SSH bağlantısı işletim sistemi açıldıktan sonra devreye girdiği için bu aşamaya ulaşamaz. Red Hat de bu işlem için yerel klavye ve monitör ya da sanal makinenin uzak konsolu gerektiğini belirtiyor.

Ortamınıza göre konsol erişimi şu yollardan biriyle sağlanır:

  • Fiziksel makine, yanınızda: Doğrudan bağlı klavye ve monitör.
  • Veri merkezindeki fiziksel sunucu: IPMI ya da KVM üzerinden uzak konsol. Fiziksel sunucu kiralıyorsanız uzak konsol erişiminin nasıl verildiğini sağlayıcınıza sorun.
  • Sanal makine ya da bulut sunucu: Sağlayıcı panelindeki sanal konsol (genellikle tarayıcıdan açılan bir VNC ya da web konsolu). Bulut sunucu kullanıyorsanız konsolu panelden açıp sunucuyu oradan yeniden başlatabilirsiniz.

Başlamadan önce şu kontrolleri yapın:

  1. Konsol penceresini açın ve klavye girişinin gerçekten sunucuya gittiğini doğrulayın.
  2. Sunucuda çalışan servisler için kısa bir kesinti planlayın; işlem birkaç yeniden başlatma içerir ve SELinux etkinse ilk açılış uzun sürebilir.
  3. Disk şifreleme (LUKS) kullanıyorsanız açılışta disk parolasını girmeniz gerekecek; bu parola elinizde değilse aşağıdaki yöntemler sizi kurtarmaz.
  4. GRUB menüsü parola korumalıysa o parolayı hazır edin; aksi halde çekirdek satırını düzenleyemezsiniz.

Hangi yöntem hangi dağıtım için?

Dağıtım Önerilen yöntem Alternatif
Rocky Linux 8, 9, 10 init=/bin/sh rd.break
AlmaLinux 8, 9 init=/bin/sh ya da rd.break (RHEL ile aynı yapı) Kurtarma ortamından açılış
RHEL 8 ve sonrası rd.break ya da init=/bin/sh Kurtarma ortamından açılış
CentOS 7 / RHEL 7 rd.break (çekirdek satırı linux16 ile başlar) init= tabanlı eski yöntem
Ubuntu Kurtarma modu, "Drop to root shell prompt" init=/bin/bash benzeri müdahale

AlmaLinux için resmi bir adım adım belge yayımlanmış değil. AlmaLinux RHEL ile ikili uyumlu olacak şekilde geliştirildiği için RHEL ve Rocky Linux'taki yöntemlerin aynen çalışması beklenir; yine de üretim sunucusunda uygulamadan önce aynı sürümdeki bir test makinesinde denemeniz iyi olur.

Rocky Linux ve AlmaLinux: init=/bin/sh yöntemi

Rocky Linux 8, 9 ve 10 için CIQ bilgi bankasındaki rehber iki yöntemden daha basit ve güvenilir olanın init=/bin/sh olduğunu söylüyor. Bu yöntemde çekirdek, normal başlatma sistemi (systemd) yerine doğrudan bir kabuk çalıştırır.

Adım 1: GRUB menüsünde durun. Sunucuyu konsoldan yeniden başlatın. GRUB menüsü göründüğünde yukarı ya da aşağı ok tuşuna basarak geri sayımı durdurun. Geri sayım biterse sistem normal açılır ve baştan başlamanız gerekir.

Adım 2: Çekirdek kaydını düzenleyin. Açmak istediğiniz çekirdeği (genellikle en üstteki) seçin ve e tuşuna basın. Düzenleme ekranında linux ile başlayan satırı bulun. Bu satır uzun olabilir ve ekranda birkaç satıra bölünmüş görünebilir.

Adım 3: init=/bin/sh ekleyin. İmleci linux satırının sonuna götürün (End tuşu ya da Ctrl+E) ve bir boşluk bırakıp şunu ekleyin:

text
init=/bin/sh

Adım 4: Açılışı başlatın. Ctrl+X ile (ya da F10) düzenlenmiş kayıtla açın. Bu değişiklik yalnız bu açılış için geçerlidir; GRUB yapılandırmasına kaydedilmez.

Adım 5: Kök dosya sistemini yazılabilir yapın ve şifreyi değiştirin. Karşınıza bir sh istemi gelir. Kök bölüm bu noktada salt okunur bağlı olduğu için önce yazılabilir hale getirin:

bash
mount -o remount,rw /
passwd root

passwd yeni şifreyi iki kez ister. Yazarken ekranda karakter görünmemesi normaldir.

Adım 6: SELinux için yeniden etiketleme işareti bırakın. SELinux etkin bir sistemde şifre dosyası etiketsiz kalırsa sonraki açılışta giriş sorunları çıkabilir. Bunu önlemek için:

bash
touch /.autorelabel

Adım 7: Sistemi normal açın. Bu kabukta systemd çalışmadığı için alışılmış reboot komutu beklendiği gibi çalışmayabilir. Diskteki değişikliklerin yazıldığından emin olup normal başlatma sistemine geçin:

bash
sync
exec /sbin/init

Sistem açılırken SELinux yeniden etiketleme başlar ve ardından makine bir kez daha yeniden başlayabilir. Bu süre içinde konsolu kapatmayın, sunucuyu zorla kapatmayın.

Alternatif: rd.break yöntemi

rd.break, açılışı initramfs aşamasında, gerçek kök dosya sistemine geçmeden hemen önce durdurur. Rocky Linux için bu yöntem özellikle karmaşık LVM ya da bölümleme düzenlerinde yararlı bir alternatif olarak öneriliyor. RHEL ve CentOS 7 için Red Hat'in anlattığı yöntem de budur.

  1. GRUB menüsünde ok tuşuyla geri sayımı durdurun, çekirdeği seçip e tuşuna basın.
  2. linux (CentOS 7'de linux16) ile başlayan satırın sonuna bir boşluk bırakıp rd.break yazın.
  3. Ctrl+X ile açın. Bir süre sonra switch_root:/# istemi gelir.

Bu aşamada gerçek kök dosya sistemi /sysroot altında salt okunur bağlıdır. Sırasıyla şu komutları çalıştırın:

bash
mount -o remount,rw /sysroot
chroot /sysroot
passwd root
touch /.autorelabel
exit
exit

İlk exit chroot ortamından çıkar, ikincisi initramfs kabuğunu kapatıp açılışın devam etmesini sağlar. rd.break eklemesi de kalıcı değildir; sonraki açılışta GRUB satırı eski haline döner.

touch /.autorelabel komutunu chroot içinde çalıştırmak önemlidir. Chroot dışında çalıştırırsanız dosya geçici initramfs ortamına yazılır ve gerçek sistemde iz bırakmaz.

CentOS 7 ve RHEL 7 için notlar

CentOS Linux 7, 30 Haziran 2024'te ömrünün sonuna ulaştı ve bu tarihten sonra resmi güncelleme almıyor. Elinizde hâlâ CentOS 7 çalışan bir sunucu varsa şifre sıfırlama yine mümkün; ancak bu sunucunun güvenlik yaması almadığını unutmayın.

CentOS 7'de dikkat edilecek farklar:

  • GRUB düzenleme ekranında çekirdek satırı linux değil linux16 ile başlar (UEFI sistemlerde linuxefi görebilirsiniz). Değişikliği bu satırın sonuna yapın.
  • Önerilen yol yukarıdaki rd.break yöntemidir.
  • Bu yazının eski sürümünde anlatılan, satırdaki ro ifadesini rw init=/sysroot/bin/sh ile değiştirme yöntemi de CentOS 7'de kullanılıyordu. Güncel resmi belgelerde öne çıkmadığı için yeni sistemlerde rd.break ya da init=/bin/sh tercih edin.
  • SELinux CentOS 7'de varsayılan olarak etkindir; touch /.autorelabel adımını atlamayın.

Şifreyi geri aldıktan sonra yapılacak asıl iş taşıma planıdır. Red Hat, CentOS 7 sistemlerini analiz etmek ve RHEL'e dönüştürmek için ücretsiz araç olarak Convert2RHEL ile Red Hat Insights'ı öneriyor. Bir başka seçenek, Rocky Linux, AlmaLinux ya da Ubuntu ile yeni bir sunucu kurup uygulamaları oraya taşımaktır. Dağıtım seçimini tartmak için Linux sunucu yönetimi ve dağıtım seçimi yazımıza bakabilirsiniz.

Ubuntu: kurtarma modu ve root kabuğu

Ubuntu'da çekirdek satırıyla uğraşmadan, GRUB'daki kurtarma modu üzerinden aynı sonuca ulaşabilirsiniz.

Adım 1: GRUB menüsünü açın. Ubuntu çoğu kurulumda GRUB menüsünü göstermeden açılır. Menüyü görmek için yeniden başlatma sırasında:

  • BIOS'lu sistemlerde Shift tuşunu basılı tutun,
  • UEFI'li sistemlerde Escape tuşuna basın (menü gelmezse birkaç kez basın).

Escape'e fazla basarsanız GRUB komut satırına düşebilirsiniz; bu durumda normal yazıp Enter'a basarak menüye dönebilirsiniz.

Adım 2: Kurtarma kaydını seçin. "Advanced options for Ubuntu" altına girin ve sonu "(recovery mode)" ile biten kaydı seçin.

Adım 3: Root kabuğunu açın. Kurtarma menüsünde "Drop to root shell prompt" (root seçeneği) satırını seçin. Root yetkisiyle bir kabuk açılır.

Adım 4: Kök bölümü yazılabilir yapın ve şifreyi değiştirin. Kurtarma modunda kök bölüm salt okunur bağlıdır:

bash
mount -o remount,rw /
passwd root

Ubuntu sunucularda yönetim çoğu zaman root yerine sudo yetkili bir kullanıcıyla yapılır. Bu durumda asıl unuttuğunuz şifre o kullanıcınınkidir:

bash
passwd kullaniciadi

Kullanıcı adından emin değilseniz /home altındaki dizinlere bakabilirsiniz:

bash
ls /home

Adım 5: Yeniden başlatın.

bash
sync
reboot

Ubuntu varsayılan olarak SELinux yerine AppArmor kullandığı için /.autorelabel adımına gerek yoktur.

SELinux yeniden etiketleme neden gerekli

RHEL tabanlı dağıtımlarda her dosyanın bir SELinux etiketi vardır. init=/bin/sh ya da rd.break ortamında SELinux politikası tam yüklü değildir; passwd komutu /etc/shadow dosyasını yeniden yazdığında dosyanın etiketi bozulabilir. Etiket hatalı kalırsa doğru şifreyi girseniz bile oturum açma reddedilebilir.

/.autorelabel dosyası, sonraki açılışta tüm dosya sisteminin yeniden etiketlenmesini tetikler. Bu işlem disk boyutuna ve dosya sayısına göre birkaç dakikadan yarım saatin üzerine kadar sürebilir. Konsolda ilerleme mesajları görürsünüz; işlem bitene kadar sunucuyu kapatmayın. Etiketleme tamamlanınca sistem kendiliğinden yeniden başlar ve /.autorelabel dosyası silinir.

Sanal makinelerde ve bulut sunucularda konsol

Sanal makinelerde ve bulut imajlarında çekirdek satırında çoğu zaman console=ttyS0,115200n8 gibi seri konsol parametreleri bulunur. Bu durumda kabuk istemi, sizin izlediğiniz grafik konsola değil seri konsola düşer ve ekranda hiçbir şey olmuyormuş gibi görünür.

Ekranda beklenen istem gelmezse:

  1. Sunucuyu konsoldan yeniden başlatıp GRUB'da tekrar e ile düzenlemeye girin.
  2. linux satırındaki console=ttyS0,... parametresini silin (yalnız bu açılış için geçerlidir).
  3. Ardından init=/bin/sh ya da rd.break ekleyip Ctrl+X ile açın.

Satırda birden fazla console= parametresi varsa, izlediğiniz konsola karşılık gelenin (genellikle tty0) en sonda kalması gerekir. Emin değilseniz seri konsol parametrelerini kaldırmak en basit yoldur.

Bulut sunucularda GRUB geri sayımı çok kısa ayarlanmış olabilir. Konsolu önceden açıp yeniden başlatma komutunu konsol penceresinden verirseniz menüyü yakalamanız kolaylaşır.

Sık hatalar ve kontrol noktaları

  • Değişikliği yanlış satıra yazmak: init=/bin/sh ya da rd.break mutlaka linux (CentOS 7'de linux16) ile başlayan satırın sonuna eklenmelidir. initrd satırına eklenen parametre işe yaramaz.
  • Kök bölümü yazılabilir yapmayı unutmak: mount -o remount,rw adımı atlanırsa passwd "Authentication token manipulation error" gibi bir hatayla şifreyi kaydetmez. Bu hatayı görürseniz önce bağlama komutunu çalıştırın.
  • rd.break'te chroot'u atlamak: passwd komutunu chroot dışında çalıştırırsanız geçici ortamın şifresini değiştirirsiniz; gerçek sistem etkilenmez.
  • /.autorelabel'ı unutmak: Şifre doğru olduğu halde girişte hata alıyorsanız sistemi yeniden aynı yöntemle açıp touch /.autorelabel komutunu ekleyin.
  • Etiketleme sırasında sunucuyu kapatmak: Uzun süren açılışı donma sanıp zorla kapatmak işlemi yarıda bırakır. Konsoldaki mesajları izleyin.
  • Klavye düzeni: Konsoldaki klavye düzeni ABD (US) olabilir. Şifrede özel karakter ya da Türkçe harf kullanıyorsanız konsolda yazdığınız karakter beklediğinizden farklı olabilir. Sıfırlama sırasında geçici olarak harf ve rakamdan oluşan bir şifre belirleyip, girişten sonra SSH üzerinden asıl şifreye geçmek bu riski ortadan kaldırır.

İşlemin başarılı olduğunu şu sırayla doğrulayın:

  1. Konsoldan root (ya da sudo kullanıcısı) ile yeni şifreyle giriş yapın.
  2. RHEL tabanlı sistemlerde SELinux durumunu kontrol edin:
bash
getenforce
  1. SSH ile ayrı bir oturumdan bağlanmayı deneyin. SSH'ta root ile şifre girişi kapalıysa bu bir sorun değil, güvenlik ayarıdır; normal kullanıcıyla bağlanıp sudo -i ile root olun.

Sıfırlamadan sonra yapılacaklar

Şifreyi geri almak işin yarısıdır. Benzer bir durumu tekrar yaşamamak ve sunucuyu korumak için:

  • Şifreyi güvenli bir yerde saklayın: Ekip içinde paylaşılan bir parola yöneticisi, tek kişinin hafızasına bağlı kalmaktan daha güvenlidir.
  • SSH anahtarına geçin: Günlük yönetimde şifre yerine SSH anahtarı kullanın ve root ile şifreyle girişi kapatın. Anahtar ayarını değiştirmeden önce mevcut oturumunuzu açık tutup yeni bir oturumla bağlanabildiğinizi test edin; aksi halde kendinizi sunucunun dışında bırakabilirsiniz.
  • Sudo yetkili ayrı bir kullanıcı tutun: Root şifresi kaybolsa bile sudo kullanıcısıyla yönetime devam edebilirsiniz.
  • GRUB parolası düşünün: Bu yazıdaki yöntemler konsola erişen herkes için çalışır. Fiziksel erişimin denetlenmediği ortamlarda GRUB'a parola koymak bu riski azaltır.
  • Yedeğinizi kontrol edin: Şifre sıfırlama gibi önyükleme müdahalelerinden önce güncel bir yedeğin olması, işler ters gittiğinde geri dönmenizi sağlar. Yedekleme stratejisi için sunucu yedekleme rehberimize bakabilirsiniz.

Sık sorulan sorular

Root şifresini SSH üzerinden sıfırlayabilir miyim?

Hayır. Root şifresini bilmiyorsanız ve sudo yetkili başka bir kullanıcınız da yoksa, şifreyi değiştirmek için önyükleyiciye müdahale etmeniz gerekir. Bu da fiziksel konsol, IPMI/KVM ya da sanal makinenin uzak konsolunu gerektirir. Sudo yetkili bir kullanıcıyla SSH'a girebiliyorsanız sudo passwd root komutu yeterlidir.

init=/bin/sh ile rd.break arasında hangisini seçmeliyim?

Rocky Linux 8, 9 ve 10'da daha basit olduğu için init=/bin/sh öneriliyor. Disk düzeniniz karmaşık LVM yapıları içeriyorsa ya da init=/bin/sh ile kök bölüme erişemiyorsanız rd.break alternatif olarak kullanılabilir. CentOS 7 ve RHEL 7'de Red Hat'in anlattığı yol rd.break'tir.

GRUB'a eklediğim parametre kalıcı olur mu?

Hayır. GRUB düzenleme ekranında e ile yaptığınız değişiklikler yalnız o açılış için geçerlidir. Sistem bir sonraki yeniden başlatmada normal yapılandırmayla açılır, ayrıca geri almanız gereken bir ayar kalmaz.

Yeniden başlatma neden bu kadar uzun sürüyor?

/.autorelabel dosyası oluşturduysanız ilk açılışta SELinux tüm dosya sistemini yeniden etiketler. Disk boyutuna göre bu birkaç dakikadan yarım saatin üzerine kadar sürebilir. Konsolda ilerleme mesajları akıyorsa işlem devam ediyordur; sunucuyu kapatmayın.

Konsolda GRUB menüsü hiç görünmüyor, ne yapmalıyım?

Ubuntu'da BIOS'lu sistemlerde Shift tuşunu basılı tutun, UEFI'li sistemlerde açılış sırasında Escape'e basın. RHEL tabanlı sistemlerde menü kısa bir süre görünür; ok tuşuna basarak geri sayımı durdurun. Sanal makinelerde konsolu yeniden başlatmadan önce açmak ve yeniden başlatmayı konsol penceresinden vermek menüyü yakalamayı kolaylaştırır.

Yazar

Kurucu, sunucu.com.tr · Bulut altyapısı ve yapay zeka otomasyonları

sunucu.com.tr ve Sunucu UK'in kurucusu. Bulut altyapısı, sanallaştırma ve sunucu yönetimi üzerine çalışıyor; şirketlerin iş yazılımlarını, web sitelerini ve yapay zeka iş yüklerini güvenli sunuculara taşıyor. Blogdaki rehberler sahada karşılaşılan kurulum, güvenlik ve taşıma işlerinden derlenir; yazılar yapay zeka desteğiyle hazırlanır ve kaynaklarla doğrulanır.

Tüm yazılarıProfil