dalam konteks apa Anda melakukan ini. Di terminal saat ini, untuk shell default pengguna?
jgr208
tidakkah Anda memiliki pengguna dalam grup sudo?
Rui F Ribeiro
3
apakah sudo vipwbekerja?
Rui F Ribeiro
1
@RuiFRibeiro ya itu terima kasih, saya tidak tahu saya bisa mengubah shell root default dalam file itu
ChiseledAbs
1
Tidak perlu dalam kasus ini, tetapi ketika Anda secara tidak sengaja membuat bencana yang melibatkan root, Anda biasanya dapat membawa mesin ke mode pengguna tunggal, memperbaiki masalah, dan kemudian kembali ke mode multi-pengguna.
boardrider
Jawaban:
29
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 chshperintah (mis. Kesalahan chsh).
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.
Untuk alasan keamanan, login apakah tekstual atau grafis dan utilitas suka sudan sudoyang 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/passwduntuk memperbaiki shell. Simpan, lepas gunung, dan Anda selesai.
ingin tahu, apa yang terjadi jika Anda melakukan ini dan file / etc / passwd dalam hash bukan teks biasa?
jgr208
1
/etc/passwdbukan 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/bashmungkin melakukan trik dalam kasus itu?
Celada
Saya tidak pernah memiliki masalah yang dijelaskan, namun saya bekerja dengan sistem terkunci yang perlu memiliki / etc / passwd tidak dalam teks biasa untuk menghindari peretas dan kompromi sistem seperti itu bahkan lebih jika mereka mendapatkan akses. Hmm itu mungkin berhasil, katakan saja saya harap saya tidak perlu mencoba dan melihat apakah itu benar-benar berfungsi.
jgr208
Saya dapat mengedit /etc/ passwd dengan sudo dari akun pengguna, saya tidak tahu bahwa shell didefinisikan dalam file ini, terima kasih
ChiseledAbs
@ChiseledAbs oh, Anda? Baik untuk Anda, senang Anda menyelesaikan masalah Anda. Saya tidak berpikir itu akan membiarkan Anda.
Celada
6
Tambahkan init=/bin/bashke baris perintah kernel Anda (jika boot dengan grub, tekan euntuk 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 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:
Dan shell root berubah secara manual.
(baris pertama
/etc/passwd
biasanya)Fom man vipw
sumber
vipw
danvigr
terima kasih! Saya selalu menggunakansudo vim /etc/passwd
visudo
sudo.ws/man/1.8.15/visudo.man.html juga, @tacsudo -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
:Keuntungan utama dari ini adalah hanya membutuhkan akses ke akun lain, bukan yang istimewa .
sumber
Untuk alasan keamanan, login apakah tekstual atau grafis dan utilitas suka
su
dansudo
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.sumber
/etc/passwd
bukan plaintext? Saya belum melihat itu setidaknya, seperti, satu dekade. Apakah itu masih berlaku pada beberapa sistem? Lagi pula, saya kirachroot /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, tekane
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 kembalichsh
.sumber
sudo usermod -s /bin/bash jdoe
akan mengubah shell jdoe menjadi
bash
. Anda kemudiansudo egrep jdoe /etc/passwd
dapat memverifikasi.sumber