"I Forgot my Linux root Password!!😥" DO THIS!! Resetting the Root Password
Tags: webdev, ramadhanbersamaredhat, linux, redhat
Published: 2024-04-02 12:45:05

## Resetting the Root Password from the Boot Loader
Mereset password **root** harus bisa dilakukan oleh system administrator. Ada beberapa metode untuk menetapkan **root** kata sandi baru. Seorang administrator sistem dapat _mem-boot sistem_ menggunakan **Live CD**, memasang sistem file **root** dari sana, dan mengedit file _/etc/shadow_. Pada bagian ini, kami mengeksplorasi metode yang tidak memerlukan penggunaan media eksternal.


- Nyalakan ulang sistem. Tekan **Ctrl + Alt + Del**.
- Hentikan hitungan mundur boot loader dengan menekan tombol apa saja, kecuali **Enter** , misalnya saya tekan **D** .
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/geqfk2ojt2yv044cb884.png)


- Pindahkan kursor ke entri kernel untuk boot.
- Tekan **e** untuk mengedit entri yang dipilih.
- Pindahkan kursor ke baris perintah kernel _(baris yang dimulai dengan linux)_. Kemudian tekan tombol **End** untuk memindahkan kursor ke baris paling akhir.
- Menambahkan **rd.break**. Dengan opsi itu, sistem akan rusak tepat sebelum sistem menyerahkan kendali dari sistem _initramfs_ ke sistem sebenarnya.
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0h2ghh1duzubf4qb3vix.png)


- Tekan **Ctrl + x** untuk keluar dan booting menggunakan konfigurasi yang dimodifikasi.
- Saat **_switch_root_** diminta, pasang kembali _/sysroot_ sistem file _read/write_, lalu gunakan **chroot** untuk masuk ke **chroot** di _/sysroot_. 
```
switch_root:/# mount -o remount,rw /sysroot
switch_root:/# chroot /sysroot
```

- Tetapkan kata sandi baru **root**.
```
sh-4.4# passwd root
```

- Pastikan semua file yang tidak berlabel, termasuk _/etc/shadow_ diberi label ulang saat boot.
```
sh-4.4# touch /.autorelabel
```

- Gunakan comand **exit** _dua kali_. Perintah _pertama keluar dari chroot_, _kedua keluar dari_ **initramfs** _debug shel_. **SELinux** _merelabel ulang _semua file saat booting lagi.



## Inspecting Logs
Melihat **log** dari _boot yang gagal_ sebelumnya dapat bermanfaat. Gunakanlah _jurnalctl_. Secara default jurnal sistem diimpan di direktori _/run/log/journal_ dan akan _dihapus_ saat **sistem di boot ulang**. Sendangkan yang disimpan di _/var/log/journal_ akan tetap ada saat **reboot**. Setel storage ke persistant dalam /etc/systemd/journal.conf.

```
[root@host ~]# vim /etc/systemd/journald.conf
...output omitted...
[Journal]
Storage=persistent
...output omitted...
[root@host ~]# systemctl restart systemd-journald.service
```

Untuk memeriksa log boot sebelumnya gunakan **journalctl -b**. dengan _angka negatif sebagai argumen_.

```
[root@host ~]# journalctl -b -1 -p err
```

## Repairing Systemd Boot Issues
### Enabling the Early Debug Shell
**Enable** kan service **debug-shell** dengan **systemctl enable debug-shell.service**, sistem memunculkan _root shell_ **TTY9( Ctrl + Alt + F9 )** di _awal selama booting_. Shel otomatis login sebagai **root**, memungkinkan _debuging_ saaat system sedang booting. Jan gan lupa untuk mematikan service ini setelah debuging.

### Using the Emergency and Rescue Targets
Dengan menambahkan salah satu **systemd.unit=rescue.target** atau **systemd.unit=emergency.target** ke baris perintah kernel dari _boot loader_, sistem akan memunculkan shell penyelamat atau darurat alih-alih memulai secara normal. Kedua shell ini memerlukan **root** _kata sandi_.
Tulis **mount -o remount,rw /** agar _root mendapat izin untuk membuat perubahan /etc/fstab _.

### Mengidentifikasi Pekerjaan yang Terjebak
Selama **startup**, systemd memunculkan sejumlah pekerjaan. Jika beberapa pekerjaan ini _tidak dapat diselesaikan_, maka pekerjaan lain akan diblokir agar tidak dapat dijalankan. Untuk memeriksa daftar _pekerjaan saat ini_ , administrator dapat menggunakan perintah **systemctl list-jobs** .