Bisakah sudo diinstal ulang setelah dihapus?

61

Ini tampaknya menjadi masalah telur ayam. Tugas yang paling umum digunakan sudoadalah menginstal dan menghapus perangkat lunak.

sudo apt-get purge <appname>

Tapi sudoitu sendiri bisa dihilangkan.

sudo apt-get purge sudo # Do not run this command on production computers!

Di sinilah kesenangan datang

ubuntu@ubuntu:~$ sudo
bash: /usr/bin/sudo: No such file or directory

Meskipun sudah jelas bahwa tidak ada orang yang waras yang akan membersihkan sudo(selain saya), seseorang dapat dibodohi untuk menjalankan perintah ini (tidak secara langsung, dalam mode hex-nya, atau apa pun namanya) atau seseorang dapat SSH dalam menyamar sebagai guru teknologi dan melakukan kekacauan .

Jadi adakah cara menginstal ulang sudo?

Pengguna Terdaftar
sumber
3
bagus aku bahkan tidak pernah tahu sudo bisa dibersihkan juga! linux sangat bisa dikustomisasi!
user247696
Tidak terlalu layak untuk dijawab, karena akan terlambat jika ini terjadi, tetapi tidak ada yang mencegah Anda menetapkan kata sandi untuk rootpengguna. Anda kemudian dapat menggunakan su, atau masuk secara langsung sebagai root jika Anda memiliki akses fisik ke mesin (ssh umumnya akan dikonfigurasi untuk menolak upaya untuk masuk sebagai root).
IMSoP
Semua jawaban tergantung pada beberapa cara mengakses sistem file dengan hak istimewa. Sebagai contoh (counter): Android saya Asus Memopad tidak memiliki sudodan tidak memiliki "boot aman" atau yang setara. Satu-satunya cara saya tahu adalah untuk pergi ke xda-devdan menginstal paket instalasi penuh. Anda beruntung, sehingga dapat dikatakan, bahwa Anda tidak memiliki batasan ini.
Carl Witthoft
@CarlWitthoft Android adalah turunan linux, daripada benar-benar menjadi distro linux. Google juga telah membuat banyak perubahan di dalamnya (yang dibenci sebagian besar penggemar linux). Rooting , yang terkenal di smartphone android, tidak lain adalah upaya untuk mendapatkan kekuatan linux nyata di android.
Pengguna Terdaftar
4
Tidak bisakah Anda login sebagai root?
Konrad Höffner

Jawaban:

56

Saya dapat menginstal aplikasi menggunakan:

pkexec apt-get install <appname>

Dari man pkexec:

  pkexec allows an authorized user to execute PROGRAM as another user. If
  username is not specified, then the program will be executed as the
  administrative super user, root.

Jadi, saya kira itu pkexec apt-get install sudoharus bekerja juga.


Sunting : sekarang saya dapat mengonfirmasi: ya , sudodapat diinstal menggunakan menggunakan pkexec apt-get install sudo:

instal ulang sudo

( klik untuk memperbesar )

Radu Rădeanu
sumber
@RaduRadeanu Ini menarik saya akan mencoba ini, terima kasih ......
Premkumar
@Premkumar Uji dengan hati-hati! Perintah terakhir dari screen shoot harus mungkin dalam kasus Anda hanya: sudo apt-get install gksu ubuntu-minimal. Tapi lebih baik, periksa paket mana yang dihapus bersamaan sudo.
Radu Rădeanu
5
@Thebluefish Paket ini disebut policykit-1(pada 12.04). Itu dapat dihapus, tetapi dengan mengorbankan paket yang biasanya Anda inginkan pada sistem desktop seperti gnome-coredan ubuntu-desktop(pada server, itu lebih mungkin tidak diperlukan oleh paket yang diperlukan). Namun, Radu, apa yang menentukan bahwa akun Anda dapat digunakan pkexec apt-get …? Apakah ini sesuatu yang Anda konfigurasikan, atau apakah itu terjadi secara otomatis, dan jika demikian, apa yang menentukan bahwa akun dapat melakukan ini?
Gilles 'SO- stop being evil'
1
@Gilles Saya tidak ingat untuk membuat beberapa konfigurasi dalam pengertian ini di masa lalu. Jadi, saya kira itu terjadi secara otomatis. Jika Anda tahu apa yang menentukan bahwa akun dapat melakukan ini, silakan bagikan; ini di luar bidang keahlian saya.
Radu Rădeanu
2
@Gilles Saya pikir anggota sudogrup dapat menggunakan pkexec. (Pengalaman saya adalah bahwa menambahkan pengguna ke grup ini memberi pkexeckemampuan dan menghapus mereka dari itu menghilangkan pkexeckemampuan; dengan cara ini, pkexeckemampuan tampaknya diberikan sama dengan sudokemampuan dalam sudoerskonfigurasi default , yang masuk akal karena dapat sudodan pkexecsebagai root adalah terutama yang membuat pengguna menjadi administrator di Ubuntu.) Saya tidak berpikir mencopot pemasangan sudoakan menghapus sudogrup. Tetapi saya tidak sepenuhnya yakin dugaan saya benar dalam semua keadaan yang masuk akal.
Eliah Kagan
29

Anda selalu dapat boot ke Mode Pemulihan , letakkan di shell root dan instal tanpa sudo.

Vojtech Trefny
sumber
16
dapatkah Anda menambahkan bagian penting dan relevan dari tautan di sini?
Pengguna Terdaftar
Jika tidak ada pemulihan yang tersedia di menu grub boot, tekan <kbd> e </kbd> dan tambahkan `tunggal` ke garis boot. Kemudian, saat boot, atur kata sandi root menggunakan passwd. Reboot normaly, pada commandline enter sudiikuti dengan kata sandi baru, dan jalankan apt-get install sudo(tanpa sudo-prefix)
ExploWare
1
Bagaimana Anda mendapatkan koneksi internet di shell root?
Avinash Raj
22

Ya, menginstal ulang sudopaket dimungkinkan melalui metode chroot .

  • Boot pertama dari live disk Ubuntu.

  • Pasang partisi Ubuntu yang sebelumnya diinstal ke direktori apa pun yang Anda inginkan. Dalam kasus saya, saya memasangnya /media/ubuntu.

    sudo mkdir /media/ubuntu
    sudo mount /dev/sdaX /media/ubuntu   # /dev/sdaX - previously installed Ubuntu partition.
    
  • Secara default Anda tidak bisa mendapatkan koneksi internet setelah chroot ke partisi. Jadi jalankan perintah di bawah ini untuk membuatnya berfungsi.

    for d in dev sys run proc; do sudo mount --bind /$d /media/ubuntu/$d ; done
    

Terima kasih kepada @Oli untuk sepotong kode yang luar biasa ini .

  • Sekarang chroot ke direktori yang di-mount,

    $ sudo chroot /media/ubuntu
    # apt-get update
    
  • Instal sudopaket dengan menjalankan,

    # apt-get install sudo
    
  • Sekarang keluar dari lingkungan chroot.

    exit
    
  • Akhirnya boot OS Ubuntu Anda. Sekarang uji sudoperintah Anda , itu pasti akan berhasil.

Avinash Raj
sumber
4

Boot dengan parameter tambahan init=/bin/shpada baris perintah kernel. Ini akan menempatkan Anda langsung ke shell root, dari mana Anda dapat menjalankan apt-get install sudodan kemudian reboot. Anda mungkin perlu menjalankan /etc/init.d/networking startuntuk mendapatkan koneksi jaringan yang berfungsi terlebih dahulu. Jauh lebih sederhana daripada main-main dengan CD pemulihan atau disk langsung, jika Anda bertanya kepada saya.

Jules
sumber
1

Jika Anda sudah mengatur atau memperbarui rootkata sandi akun pengguna dengan perintah ini sudo passwd rootmaka Anda tidak perlu khawatir tentang sudopenghapusan. Cukup login ke rootakun Anda dan kemudian instal sudo,

su
apt-get install sudo

masukkan deskripsi gambar di sini

Klik di sini untuk memperbesar

Avinash Raj
sumber
ini berfungsi jika akun root diaktifkan, dan di ubuntu biasanya dinonaktifkan. supada pc saya memberikan "su: Kegagalan otentikasi", meskipun saya memberikan kata sandi yang benar
BЈовић
ya, Anda benar itulah yang saya katakan. Jika Anda sudah memperbarui kata sandi akun pengguna root, maka Anda tidak perlu khawatir tentang penghapusan sudo. Sekarang coba ini sudo passwd root,, itu akan memungkinkan Anda untuk memperbarui kata sandi akun pengguna root. Sekarang login kembali ke akun root Anda. dengan menjalankan superintah. Setelah Anda bisa masuk maka Anda akan bebas untuk membersihkan sudo.Sekarang bersihkan sudo dengan sudo apt-get purge sudo.Login ke akun root Anda untuk menginstal ulang paket sudo dengan menjalankan sudanapt-get install sudo
Avinash Raj
-1

sudo (dan hak akses root lainnya) hanya berlaku untuk OS yang sedang berjalan. Jika Anda konyol dan menghapus sudo (atau / usr / dalam hal ini) dan tidak memiliki alternatif seperti pkexec, Anda dapat mem-boot dari sesuatu yang lain, menyalin perangkat lunak yang hilang, dan memulai kembali.

Akses fisik membatalkan semua dan semua keamanan perangkat lunak yang mungkin dimiliki sistem Anda.

paul
sumber
Saya sarankan memperluas ini untuk menjelaskan apa yang Anda maksud dengan "salin perangkat lunak yang ada."
Eliah Kagan
Bukan cara yang sangat mudah untuk memperbaikinya.
Seth
@ Tetap tanpa intervensi op Saya sangat ragu itu bisa diperbaiki tanpa menulis jawaban lain.
Braiam
Yah cara yang tepat untuk melakukan itu adalah chroot, tetapi ada banyak cara yang kurang biadab. Sebagai contoh, masuk sebagai root (cara NORMAL), atau, jika Anda entah bagaimana tidak memiliki kata sandi root, cukup set init = / bin / bash sebagai parameter kernel, dan Anda melewati seluruh sistem init termasuk otentikasi login.
orion
-2

Masalah ini tampaknya sangat spesifik untuk Ubuntu. Sebagai pengguna non-ubuntu pada awalnya saya bahkan tidak mengerti mengapa sudo akan menjadi kasus khusus dengan cara apa pun (banyak distribusi tidak menginstalnya secara default).

Anda tidak perlu sudo sama sekali. Ini hanya jalan pintas malas yang memungkinkan Anda untuk mengeksekusi perintah root tanpa benar-benar masuk sebagai root. Namun, jika Anda harus melakukan sesuatu lebih dari satu perintah, itu hanya mengerikan terus-menerus mengawali semuanya dengan sudo. Belum lagi bahwa menggunakan sudomembuat pengguna tidak tahu tentang cara kerja perizinan dan akun root. Lebih masuk akal untuk hanya login sebagai root, melakukan administrasi sistem dan logout. Itu Anda lakukan sujika Anda sudah masuk sebagai pengguna biasa. Atau Anda bisa login langsung sebagai root.

Tentu saja Anda perlu memiliki rootset kata sandi, itu adalah konfigurasi yang masuk akal, jika tidak Anda memiliki sistem seperti windows di mana ada tindakan yang tidak dapat dilakukan oleh siapa pun dan Anda benar-benar terkunci jika entah bagaimana sudotidak tersedia (itu memerlukan kerja /etc/, set $PATHdan lainnya hal-hal yang dipasang - yang mungkin tidak Anda miliki jika terjadi kesalahan di awal boot).

orion
sumber
Ini mungkin informasi yang berguna, tetapi tidak menjawab pertanyaan.
Luís de Sousa
Memang. Ini sebenarnya tidak terlalu relevan dengan sistem di mana password root ini adalah cacat dan sudo yang diinstal secara default. Dan jika Anda melihat jawaban lain, Anda akan melihat paragraf terakhir juga tidak benar.
Oli
Pengguna yang mempertimbangkan untuk menghapus sudodari ubuntu juga harus mempertimbangkan pengaturan kata sandi root (pertanyaan lain menunjukkan bagaimana melakukannya). Seorang pengguna yang tidak peduli dengan hal ini, dapat terus menggunakan sudo.
orion