Bisakah saya memulai proses sebagai root tanpa meluncurkan shell login root?

8

Saya mencoba mengubah shell login.

Inilah yang /etc/passwdterlihat 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 zshtersedia:

$ which zsh
/usr/bin/zsh

Oke, sepertinya logis untuk mengganti zshdengan path lengkapnya. Tetapi bagaimana saya bisa melakukannya?

Saya memiliki satu pengguna lain pada sistem ( user), namun tidak memiliki hak akses root dan sudotidak 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 rootakun tersebut.

Pertanyaan saya adalah: Apakah ada cara, bahkan secara terprogram, untuk meluncurkan proses dengan rootakun tanpa meluncurkan shell login terlebih dahulu?

rahmu
sumber
bagaimana su? atau gksu? sesuatu sepertisu -c 'sed -i s,root:/:zsh,root:/:/usr/bin/zsh, /etc/passwd'
qdii
Bukankah seharusnya baris file passwd menjadi / usr / bin / zsh? Mengapa Anda hanya menempatkan string zsh?
slm
@slm Itulah perubahan yang ingin dilakukan OP ...
a CVn
1
jika saran @qdii bekerja (yaitu itu su -c "<commands>") berfungsi ... bisakah kita tidak cukup menggunakan su -c "/bin/bash"untuk menjalankan bash dengan root pengguna ?
humanityANDpeace
1
@ humanityANDpeace: itu tidak seharusnya berhasil. Perintah yang diteruskan ke -cdijalankan melalui shell login pengguna. -sdapat digunakan untuk menggunakan shell lain ... hanya jika shell login yang ada valid atau invoker adalah root.
Mat

Jawaban:

4

Memiliki izin su

Anda dapat menggunakan perintah berikut untuk mengubah shell pengguna mana pun.

su -c "/usr/bin/chsh -s /bin/bash root"

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.

  • tunggal
  • init = / bin / sh
  • 1

Baris akan terlihat seperti ini:

 kernel /vmlinuz-2.6.15-27-386 root=/dev/mapper/Ubuntu-root ro init=/bin/bash

Di Grub seharusnya terlihat mirip dengan ini:

       ss dari grub

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/passwdfile Anda . Cukup ketik rebootsaat Anda selesai.

slm
sumber
2
Dia mengatakan dia tidak memiliki akses fisik, sehingga kemungkinan dia tidak akan dapat melihat menu GRUB.
Renan
@Renan. OK saya tidak mendapatkan itu dari beberapa bacaan pertama. Tersembunyi di baris tentang "..aku tidak bisa boot di live CD .." yang anehnya diucapkan kepadaku.
slm
4
suPerintah Anda tidak akan berfungsi, karena akan mencoba memanggil shell root, yang tidak ada.
Gilles 'SANGAT berhenti menjadi jahat'
@Gilles: Ada ide lain? Saya tidak melihat cara untuk memperbaikinya tanpa akses fisik. Merasa seperti kita sedang berusaha melawan apa yang dirancang sistem untuk mencegah pada titik ini.
slm
1
@ msl Tanpa sudo, saya pikir akun root terkunci, sehingga diperlukan akses fisik.
Gilles 'SANGAT berhenti menjadi jahat'