Saya mencoba mengubah shell login.
Inilah yang /etc/passwd
terlihat seperti baris pertama (pada instalasi Debian Wheezy):
rootx:0:0:root:/root:/:zsh
Ketika saya mencoba masuk sebagai root
:
Cannot execute zsh: No such file or directory
Saya tahu zsh
tersedia:
$ which zsh
/usr/bin/zsh
Oke, sepertinya logis untuk mengganti zsh
dengan path lengkapnya. Tetapi bagaimana saya bisa melakukannya?
Saya memiliki satu pengguna lain pada sistem ( user
), namun tidak memiliki hak akses root dan sudo
tidak diinstal pada sistem.
Asumsikan bahwa untuk alasan apa pun (enkripsi, akses fisik, ...) Saya tidak dapat mem-boot pada CD langsung untuk memodifikasi file.
Saya tahu, bagaimanapun, kredensial untuk root
akun tersebut.
Pertanyaan saya adalah: Apakah ada cara, bahkan secara terprogram, untuk meluncurkan proses dengan root
akun tanpa meluncurkan shell login terlebih dahulu?
su
? ataugksu
? sesuatu sepertisu -c 'sed -i s,root:/:zsh,root:/:/usr/bin/zsh, /etc/passwd'
su -c "<commands>"
) berfungsi ... bisakah kita tidak cukup menggunakansu -c "/bin/bash"
untuk menjalankan bash dengan root pengguna ?-c
dijalankan melalui shell login pengguna.-s
dapat digunakan untuk menggunakan shell lain ... hanya jika shell login yang ada valid atau invoker adalah root.Jawaban:
Memiliki izin su
Anda dapat menggunakan perintah berikut untuk mengubah shell pengguna mana pun.
Jika Anda memiliki akses fisik
Selama boot Grub, Anda dapat masuk ke sistem apa pun selama Anda memiliki akses konsol dan tidak ada kata sandi yang mencegah Anda mendapatkan akses ke menu Grub.
Selama boot awal sistem ketika menu Grub muncul, jika Anda memasuki menu dan mengedit (tekan etombol) garis kernel, Anda dapat menambahkan salah satu dari hal-hal berikut untuk membuat boot kernel dalam mode pengguna tunggal.
Baris akan terlihat seperti ini:
Di Grub seharusnya terlihat mirip dengan ini:
Setelah Anda melakukan perubahan boot kernel (tombol tekan b).
Ini akan memberi Anda akses sementara ke sistem dengan shell di mana Anda dapat menggunakan vi / vim untuk membuat perubahan apa pun yang Anda perlukan untuk
/etc/passwd
file Anda . Cukup ketikreboot
saat Anda selesai.sumber
su
Perintah Anda tidak akan berfungsi, karena akan mencoba memanggil shell root, yang tidak ada.