Apa manfaat sudo dari su?

19

Apa manfaat sebenarnya yang dicapai Ubuntu (atau turunan Debian) dengan menonaktifkan pengguna root?

Di mana-mana saya membaca, dikatakan untuk mencegah kerusakan yang tidak disengaja bagi pengguna yang tidak berpengalaman. Saya ingin tahu apa sebenarnya, karena sudodapat menjalankan semua perintah (yang saya tahu / gunakan).

Jadi dalam hal apa root dapat menyebabkan kerusakan sedangkan sudotidak bisa?

PS: Saya tahu cara sudokerjanya.

Web-E
sumber
kemungkinan rangkap dari Mengapa tidak ada opsi untuk masuk sebagai root?
Takkat

Jawaban:

31

Jadi dalam hal apa root dapat menyebabkan kerusakan sedangkan sudo tidak bisa?

Karena Anda biasanya harus memohon sudosetiap kali Anda ingin melakukan sesuatu yang memerlukan hak istimewa, alasannya adalah bahwa Anda akan "berpikir sebelum melompat", yaitu tidak hanya menempelkan sudo di depan sesuatu tanpa memikirkan perintah apa yang sedang Anda jalankan. akan dilakukan.

Dengan sudi sisi lain, begitu Anda masuk, Anda masuk. Anda memiliki carte blanche (lisensi terbuka) untuk melakukan apa saja, dan alasannya adalah Anda mungkin lupa sejenak bahwa Anda memiliki hak istimewa itu dan jika Anda memiliki Beruntung, jalankan sesuatu yang serius akan mempengaruhi / merusak sistem Anda - jika Anda tidak memiliki hak istimewa, perintah tidak akan melakukan sesuatu yang serius.

ish
sumber
8
Logika "think before you leap" sama naifnya dengan berpikir pengguna akan berhenti berpikir ketika ditampilkan kotak dialog yang mengatakan "Apakah Anda benar-benar ingin menginstal TrashTheComputer.Virus: Ya / tidak?" akan mengurangi tingkat infeksi malware.
Dan Neely
9
@DanNeely - Saya rasa tidak. Saya mengetik banyak perintah, dan sebagian besar tidak perlu sudo, jadi saya tidak menggunakannya. Ketika saya menggunakannya, itu memberi saya jeda sejenak. Ya, saya berbicara sebagai programmer, bukan pengguna biasa, tapi sekali lagi, rata-rata pengguna tidak menggunakan baris perintah.
Nathan Long
2
@ NathanLong tidak sepenuhnya benar dengan Linux, alasan pertanyaan ini ada menunjukkan "pengguna rata-rata" tidak mengerti mengapa harus menggunakan sudolebih su. Terlalu sering, orang mengatakan "gunakan sudo karena lebih aman daripada su" - yang naif untuk berpikir karena sama sekali tidak aman. Untuk melupakan Anda menggunakan sutidak ada alasan, itu hanya ketidakmampuan kanan jika Anda menjalankan perintah sebagai root secara tidak sengaja.
ash
1
@ash Saya masih mengatakan pengguna biasa tidak akan bertanya tentang implikasi keamanan komparatif dari dua metode untuk meningkatkan hak pengguna. Faktanya, OP memiliki pertanyaan tentang StackOverflow. Tapi OP samping, mengingat apa yang Anda lakukan 15 detik yang lalu lebih mudah daripada mengingat apa yang Anda lakukan kemarin, dan Anda dapat dengan mudah memiliki sesi terminal yang mencakup hari. Jadi ya, itu pada Anda untuk tidak lupa ketika Anda menggunakan su, tetapi secara pribadi saya lebih suka tidak memasang bom daripada menganggap saya akan ingat untuk melucuti mereka.
Nathan Long
16

IMO keuntungan utama dari sudo atas su adalah bahwa sudo memiliki logging unggul dari perintah apa yang dijalankan dan sudo memberikan kontrol yang lebih baik atas apa yang dapat dilakukan pengguna.

su adalah semua atau tidak sama sekali, tetapi sudo dapat dikonfigurasi untuk memungkinkan akses ke beberapa, tetapi tidak semua perintah.

Lihat https://help.ubuntu.com/community/RootSudo untuk diskusi yang lebih lengkap, termasuk kelebihan dan kekurangan.

Harimau kumbang
sumber
11

su -

Saat masuk sebagai root , tugas apa pun yang Anda mulai, tindakan yang Anda picu, atau peristiwa acak yang disebabkan oleh mengunjungi situs web tertentu, dll. Akan berjalan sebagai pengguna super .

sudo

Saat Anda memanggil sudo , saat Anda menjalankan perintah, hanya perintah itu yang akan berjalan sebagai pengguna super .

Anda akan dimintai kata sandi , sebelum perintah dijalankan. Jadi interaksi pengguna dengan Anda juga diperlukan .

Upaya untuk memohon sudo juga dapat dicatat .

david6
sumber
2
Memang, ia meminta kata sandi pengguna saat ini, yang membuatnya lebih mudah untuk mengelola kata sandi root. Jika sebuah akun dihapus dari sistem, kata sandi root tidak perlu diatur ulang. Lebih baik lagi, akun root bahkan tidak memerlukan kata sandi sama sekali, sehingga akun root tidak dapat dikompromikan dengan paksa.
jippie
@jippie menyatakan praktik umum yang baik untuk menghapus / memblokir / membatalkan kata sandi root dan hanya mengizinkan akses via sudo su. sedangkan tanda hubung -adalah bendera yang diterima oleh sudan memperlakukan shell Anda seolah-olah Anda login sebagai pengguna (menjalankan serangkaian file lingkungan yang berbeda yaitu .bashrc / .profile)
ash
3

Ini tentang manajemen pengguna / kata sandi untuk sysadmin.

Jika Anda memiliki banyak pengguna, mereka semua harus memiliki akun terpisah dan harus dapat dilacak menggunakan akun tersebut. Ini berarti bahwa orang tidak dapat menyembunyikan identitas mereka. Juga, jika Anda perlu mencabut izin pengguna tertentu, Anda juga tidak perlu mengatur ulang kata sandi root. Memberi setiap orang di lingkungan dengan lebih dari 2 admin, kata sandi root membuat mimpi buruk ketika satu orang berhenti. Anda tidak hanya harus mengubahnya, tetapi mengomunikasikannya, dll. Semua hal ini juga harus terjadi ketika salah satu dari mereka memiliki laptop yang dicuri atau hal-hal seperti itu. Satu akun dengan satu kata sandi per orang membuat administrasi lebih sederhana. Ini mirip dengan filosofi di balik mengapa setiap layanan harus memiliki akun sendiri. Jika satu akun dikompromikan, Anda tidak perlu mengkonfigurasi ulang selusin layanan lain (seperti tugas cadangan) untuk menggunakan akun yang berbeda.

Saya juga merasa nyaman secara pribadi untuk tidak memiliki kata sandi lain untuk melacak, kehilangan, dan berkompromi. Pada RHEL saya secara khusus menonaktifkan akun root setelah mengkonfigurasi sudo jadi saya tidak perlu melacaknya. Sekali waktu seorang pengguna mencetak file sudo, tapi itu bisa diperbaiki dalam mode single-user. (Biasanya, itu biasanya mesin produksi.)

CATATAN: 'sudo bash' akan memungkinkan Anda melewatkan mengetik sudo untuk setiap perintah ...

flickerfly
sumber
Saya selalu sudo mc: D
Rony
Satu-satunya jawaban di sini yang layak dipilih, dengan jelas menjawab pertanyaan itu tanpa lebih jauh merancukan pertanyaan itu atau menyesatkan orang-orang ke pengertian yang salah tentang informasi.
ash
@ flickerfly, saya percaya bahwa di "setel ulang kata sandi root untuk pengguna yang sama" "untuk pengguna yang sama" harus dihapus - itu akan lebih akurat dengan cara itu.
Richlv
@ Richlv, Anda benar. Saya membuat edit yang Anda sarankan. Tidak yakin apa yang saya maksudkan di sana.
flickerfly
2

Saya pikir pertama, kita perlu melihat ke dalam apa yang su dan sudo sebenarnya adalah

su - singkatan Pengguna Pengganti. Anda menggunakan ini untuk beralih ke shell sebagai pengguna lain yang menggunakan kata sandi pengguna itu. Biasa digunakan dengan root. Tidak memerlukan kata sandi saat dijalankan sebagai root.

sudo - memungkinkan pengguna yang diizinkan untuk menjalankan perintah yang ditentukan sebagai pengguna lain. Juga biasa digunakan dengan root. Namun, ini memungkinkan Anda untuk secara khusus mengelola perintah apa yang dapat dieksekusi sebagai penggunaan lain. (Misalnya, Anda bisa memberi pengguna kemampuan untuk menjalankan skrip init.d tetapi tidak ada yang lain.)

Catatan, Anda selalu dapat menjalankan sudo suatau sudo -idan itu akan memberi Anda shell root. Namun, tidak ada kata sandi root berarti tidak masuk langsung sebagai root ... yang berarti tidak ada yang bisa membobol pengguna itu.

EDIT: jadi mungkin jawaban yang Anda cari adalah: tidak memiliki kata sandi root memaksa Anda untuk menggunakan sudo, yang pada gilirannya akan menyelaraskan Anda dengan sudofilosofi yang menyarankan Anda untuk menegakkan kontrol yang lebih besar atas tindakan yang dijalankan sebagai root.

pengguna606723
sumber
Saya menulis ini sendiri ....
user606723
2

Selain itu ada pertimbangan logging untuk dipertimbangkan antara sudo dan su. Menjadi su hanya melakukan semuanya sebagai root tanpa entri selain satu baris dalam auth log yang mengatakan Anda menjadi root.

Sudo di sisi lain - selalu dicatat sebagai ID pengguna Anda dengan peningkatan priveleesw.

kd1s
sumber
0

Biasanya, masuk sebagai su lebih mudah saat melakukan tugas administratif. Namun, setidaknya ada satu pengecualian: ketika kepemilikan file penting. Jika Anda membutuhkan pengguna untuk menjadi pemilik file, maka masuklah sebagai pengguna itu dan gunakan sudo untuk donwload atau menyalin file. Contoh sederhana adalah file bookmark dan wallpaper. Jika pengguna tidak memiliki file tersebut, Firefox "Restore" bookmark "From File" akan gagal. Ketika Anda mengatur wallpaper desktop, itu mungkin tidak berfungsi kecuali Anda memiliki file. Terkadang Anda hanya dapat mengatur hak istimewa atau mengaktifkan sebagai file yang dapat dieksekusi, tetapi beberapa pengaturan atau program gagal jika Anda bukan pemilik file.

DotheMath45
sumber
Anda masuk sebagai root dan menggunakan Firefox untuk menjelajahi web? Saya pikir ini adalah alasan untuk menonaktifkan akun root. Ini menghilangkan kemungkinan hanya login sebagai root untuk penggunaan sehari-hari.
adempewolff