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.
Batuhan ÇelikelGü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:
- Konsol penceresini açın ve klavye girişinin gerçekten sunucuya gittiğini doğrulayın.
- 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.
- 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.
- 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:
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:
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:
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:
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.
- GRUB menüsünde ok tuşuyla geri sayımı durdurun, çekirdeği seçip
etuşuna basın. linux(CentOS 7'delinux16) ile başlayan satırın sonuna bir boşluk bırakıprd.breakyazın.- 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:
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ı
linuxdeğillinux16ile başlar (UEFI sistemlerdelinuxefigörebilirsiniz). Değişikliği bu satırın sonuna yapın. - Önerilen yol yukarıdaki
rd.breakyöntemidir. - Bu yazının eski sürümünde anlatılan, satırdaki
roifadesinirw init=/sysroot/bin/shile değiştirme yöntemi de CentOS 7'de kullanılıyordu. Güncel resmi belgelerde öne çıkmadığı için yeni sistemlerderd.breakya dainit=/bin/shtercih edin. - SELinux CentOS 7'de varsayılan olarak etkindir;
touch /.autorelabeladı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:
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:
passwd kullaniciadi
Kullanıcı adından emin değilseniz /home altındaki dizinlere bakabilirsiniz:
ls /home
Adım 5: Yeniden başlatın.
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:
- Sunucuyu konsoldan yeniden başlatıp GRUB'da tekrar
eile düzenlemeye girin. linuxsatırındakiconsole=ttyS0,...parametresini silin (yalnız bu açılış için geçerlidir).- Ardından
init=/bin/shya dard.breakekleyip 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/shya dard.breakmutlakalinux(CentOS 7'delinux16) ile başlayan satırın sonuna eklenmelidir.initrdsatırına eklenen parametre işe yaramaz. - Kök bölümü yazılabilir yapmayı unutmak:
mount -o remount,rwadımı atlanırsapasswd"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:
passwdkomutunu 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 /.autorelabelkomutunu 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:
- Konsoldan root (ya da sudo kullanıcısı) ile yeni şifreyle giriş yapın.
- RHEL tabanlı sistemlerde SELinux durumunu kontrol edin:
getenforce
- 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 -iile 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.