Saya salah masuk
chsh -s /usr/bin
dari pada
chsh -s /bin/bash
dan sekarang saya tidak bisa masuk ke shell root, bagaimana cara memulai bash shell sebagai root secara manual?
sudo vipw
bekerja?
Saya salah masuk
chsh -s /usr/bin
dari pada
chsh -s /bin/bash
dan sekarang saya tidak bisa masuk ke shell root, bagaimana cara memulai bash shell sebagai root secara manual?
sudo vipw
bekerja?
Jawaban:
Meskipun root tidak memiliki akses, pengguna dalam grup sudo masih dapat menjalankan perintah istimewa - sepertinya kesalahannya bukan pada sudo, tetapi di tempat lain dalam sudo chsh
perintah (mis. Kesalahan chsh).
Dengan demikian sudo Anda tampaknya berfungsi.
File passwd dapat diedit dengan:
sudo vipw
Dan shell root berubah secara manual.
(baris pertama /etc/passwd
biasanya)
root:x:0:0:root:/root:/bin/bash
Fom man vipw
Perintah vipw dan vigr masing-masing mengedit file / etc / passwd dan / etc / group. Dengan flag -s, mereka akan mengedit versi shadow dari file-file tersebut, / etc / shadow dan / etc / gshadow. Program akan mengatur kunci yang sesuai untuk mencegah korupsi file.
vipw
dan vigr
terima kasih! Saya selalu menggunakansudo vim /etc/passwd
visudo
sudo.ws/man/1.8.15/visudo.man.html juga, @tac
sudo -e
, yang melakukan fitur penguncian-pengeditan untuk pengeditan apa pun.
Opsi lain, dengan asumsi Anda memiliki akses ke akun lain, adalah secara manual mengganti shell default dengan menggunakan su --shell=/bin/bash
:
-s, --shell = SHELL
jalankan SHELL jika / etc / shells mengizinkannya
Keuntungan utama dari ini adalah hanya membutuhkan akses ke akun lain, bukan yang istimewa .
Untuk alasan keamanan, login apakah tekstual atau grafis dan utilitas suka su
dan sudo
yang memungkinkan Anda untuk menjalankan perintah sebagai pengguna yang berbeda semua menjalankan perintah tersebut melalui shell pengguna target. Jika shell pengguna target tidak berfungsi, well, Anda telah melihat hasilnya :-(
Kecuali Anda memiliki root shell yang masih berfungsi berjalan di suatu tempat atau sesuatu seperti biner setuid-root atau sesuatu yang memungkinkan Anda untuk mem-bypass ini, me-reboot dan memperbaiki masalah menggunakan sistem penyelamatan atau gambar langsung mungkin merupakan taruhan terbaik Anda.
Boot sistem penyelamatan, pasang sistem file root sistem nyata Anda di suatu tempat, katakan /mnt/foo
,, dan edit /mnt/foo/etc/passwd
untuk memperbaiki shell. Simpan, lepas gunung, dan Anda selesai.
/etc/passwd
bukan plaintext? Saya belum melihat itu setidaknya, seperti, satu dekade. Apakah itu masih berlaku pada beberapa sistem? Lagi pula, saya kira chroot /mnt/foo chsh -s /bin/bash
mungkin melakukan trik dalam kasus itu?
Tambahkan init=/bin/bash
ke baris perintah kernel Anda (jika boot dengan grub, tekan e
untuk mengedit entri boot), dan Anda akan memiliki bash shell yang berjalan sebagai root tanpa harus memberikan kata sandi. Root filesystem Anda kemungkinan masih akan di-mount hanya baca, jadi Anda harus melakukan remount terlebih dahulu, kemudian Anda dapat mengganti shellnya kembali chsh
.
sudo usermod -s /bin/bash jdoe
akan mengubah shell jdoe menjadi bash
. Anda kemudian sudo egrep jdoe /etc/passwd
dapat memverifikasi.