Apa perbedaan antara 'su -', 'sudo bash' dan 'sudo sh'?

29

Saya ingin tahu apa perbedaannya

  • su -
  • sudo bash
  • sudo sh

Saya tidak dapat masuk sebagai root saat melakukan su -karena saya tidak memiliki kata sandi root - maksud saya saya memiliki kata sandi pengguna yang dapat saya gunakan sudo "command" tetapi kata sandi ini tidak berfungsi karena su - saya dapat masuk sebagai root dengan sudo bashkata sandi pengguna saya dan saya bisa masuk sementara lakukan sudo shtetapi kemudian saya mendapatkan prompt perintah dalam formulir ini #

Patryk
sumber

Jawaban:

27

Latar Belakang

Di Linux (dan Unix secara umum), ada SuperUser bernama Root . Pengguna Super dapat melakukan apa saja dan segala sesuatu, dan dengan demikian melakukan pekerjaan sehari-hari karena Pengguna Super dapat berbahaya. Anda dapat mengetik perintah dengan salah dan menghancurkan sistem. Idealnya, Anda dijalankan sebagai pengguna yang hanya memiliki hak istimewa yang diperlukan untuk tugas yang dihadapi. Dalam beberapa kasus, ini tentu Root, tetapi sebagian besar waktu itu adalah pengguna biasa.

su -

Perintah ini digunakan untuk masuk di akun root.
Secara default, kata sandi akun Root dikunci di Ubuntu. Ini berarti bahwa Anda tidak dapat masuk sebagai Root secara langsung atau menggunakan perintah su untuk menjadi pengguna Root. Namun, karena akun Root ada secara fisik, masih dimungkinkan untuk menjalankan program dengan hak istimewa tingkat root. Di sinilah sudo masuk - memungkinkan pengguna yang berwenang (biasanya pengguna "Administratif") untuk menjalankan program tertentu sebagai Root tanpa harus mengetahui kata sandi root.

Lihat Cara Mengaktifkan Akun Root .

sudo sh

Perintah ini menjalankan "sh" sebagai pengguna super.
Utilitas sh adalah penerjemah bahasa perintah yang akan menjalankan perintah yang dibaca dari string baris perintah, input standar, atau file yang ditentukan.

sudo bash

Perintah ini menjalankan "bash" sebagai pengguna super.
Bash adalah shell, atau interpreter bahasa perintah. Bash adalah shell yang kompatibel dengan sh yang menggabungkan fitur berguna dari shell Korn (ksh) dan shell C (csh). Hal ini dimaksudkan untuk memenuhi standar Shell dan Tools IEEE POSIX P1003.2 / ISO 9945.2. Ini menawarkan peningkatan fungsional lebih dari sh untuk pemrograman dan penggunaan interaktif. Selain itu, sebagian besar skrip sh dapat dijalankan oleh Bash tanpa modifikasi.

Referensi: 1 , 2 , 3 .

desgua
sumber
7
Perlu dicatat bahwa Anda dapat masuk sebagai pengguna super dengan menjalankan sudo su -tanpa kata sandi root. Karena sudo menjalankan su -perintah dengan izin root, Anda hanya akan dimintai kata sandi pengguna. Ini memiliki keuntungan mengatur lingkungan pengguna root, yang tidak dapat dilakukan hanya dengan menjalankan shell dengan sudo.
Aaron D
6

su -:

Ini akan mengubah pengidentifikasi pengguna Anda dan mewarisi variabel lingkungan seolah-olah Anda telah masuk dengan pengguna itu. Biasanya Anda akan menggunakan format su - <userid>untuk login sebagai pengguna. Jika Anda menghapus "userid", ia menganggap Anda mencoba masuk sebagai root - yang tidak dapat Anda lakukan (kecuali Anda mengubah kata sandi root).

sudo bash& sudo sh:

Apa pun setelah sudo adalah program untuk dijalankan - jadi dalam kasus ini Anda meminta untuk menjalankan beberapa shell - bash dan dash masing-masing. gunakan man bashdan man shuntuk detail lebih lanjut tentang shell yang berbeda.


Pertanyaan-pertanyaan Terkait:

kebebasan fosil
sumber
Ok, terima kasih atas balasan tetapi lalu apa kata sandi default untuk root? Di mana saya bisa menemukannya?
Patryk
@lordmonkey root tidak memiliki kata sandi, dan tidak memerlukannya. sudo -iakan memberi Anda shell login seperti biasa su -, kecuali sudo meminta kata sandi Anda, bukan root.
geirha