Jadi saya telah membaca perbedaan antara menggunakan su
dan sudo
, dan semua orang tampaknya sepakat bahwa sudo
pendekatan ini lebih aman daripada memungkinkan akses ke akun root itu sendiri. Mereka mengatakan bahwa dengan akun root Anda dapat menghancurkan seluruh sistem Anda hanya dengan satu perintah. Ini saya mengerti. TETAPI pengguna awal yang dibuat pada sistem juga memiliki akses ke semua perintah menggunakan sudo. Ini saya bisa mengetahuinya dengan menjalankan su -l
. Jika ini masalahnya, maka saya bisa menjalankannya sudo <game-ending command>
untuk merusak sistem saya. Jadi, bagaimana pendekatan ini lebih baik atau lebih aman daripada memungkinkan saya akses langsung ke akun pengguna super? Saya dapat menjalankan semua perintah yang sama ...
Apakah karena menggunakan sudo
pada baris perintah saya secara eksplisit memberitahu komputer saya pikir saya tahu apa yang saya lakukan? Apakah mereka pikir orang akan lupa bahwa mereka berada di bawah akun pengguna super kecuali mereka secara eksplisit mengatakannya?
Orang-orang juga menyatakan bahwa jika sistem dikompromikan dan dimasukkan oleh seseorang asing, berada di bawah akun root akan memungkinkan mereka untuk melakukan hal-hal buruk pada sistem saya. Tapi menurut saya jika mereka sudah memiliki akses ke akun saya, dan tahu kata sandi saya, mereka dapat melakukan hal-hal buruk yang sama dengan menggunakan sudo dan memasukkan kata sandi saya karena mereka bahkan tidak perlu mengetahui kata sandi pengguna super. Apa yang tidak saya dapatkan di sini?
sumber
Jawaban:
Secara pribadi saya tidak menganggapnya lebih aman dan sebagian besar manfaat (dari sudo) ada pada sistem multi-pengguna. Pada sistem pengguna tunggal mungkin adalah pencucian.
Manfaatnya adalah (tanpa urutan tertentu):
sudo -i
mungkin merupakan metode terbaik untuk mengisolasi variabel lingkungan root dari pengguna Anda. Ini muncul dari waktu ke waktu tetapi cukup esoteris. Lihat https://help.ubuntu.com/community/RootSudo#Special_notes_on_sudo_and_shellsMungkin ada lebih banyak manfaat, tetapi itu adalah yang utama, IMHO.
Lihat juga - https://help.ubuntu.com/community/RootSudo
Untuk mencoba menjawab beberapa pemikiran Anda yang lain:
Jadi, meskipun Anda telah mengamati masalah atau kekurangan pada sudo, su memiliki kerentanan yang sama persis dan su tidak lebih unggul daripada sudo dalam aspek-aspek tersebut, IMHO
sumber
Bayangkan Anda memiliki 20 menit untuk melakukan sesuatu yang kompleks. Anda sedikit mabuk dan Anda harus buru-buru. "Ayo gunakan su," katamu. “Ini akan menghemat waktu” adalah alasan Anda.
Secara tidak sengaja Anda mengetik
dari pada
Sistem Anda sekarang gagal sendiri dan Anda memiliki 10 menit hingga batas waktu Anda.
Jika Anda secara eksplisit memilih kapan Anda perlu root, Anda dapat meminimalkan kemungkinan ini terjadi. Root mungkin tidak diperlukan untuk itu,
rm -r ./*
jadi mengapa menggunakannya? Mengapa mengambil risiko?Itulah arti "keselamatan" di sini. Meminimalkan risiko pengguna (semua pengguna, bukan hanya pemula) membuat kesalahan fatal.
Tentu saja, ini adalah contoh ekstrem yang seharusnya tidak boleh terjadi di lingkungan produksi (saya jamin itu terjadi di lingkungan prod).
Dari segi keamanan ada beberapa hal yang sudo lebih baik juga. Seperti yang dikatakan @Panther - logging, pembatasan, kata sandi root adalah SPOF, dll.)
sumber
chown -R nobody:nobody /
atau bahkanchown -R nobody ../
sebagai root.chmod
tentu saja memiliki masalah yang sama juga dalam mode rekursif. Tetapi poin terbaik yang Anda buat adalah bahwa Anda seharusnya hanya menjadi root saat Anda membutuhkannya; semakin sedikit hak istimewa login Anda semakin baik untuk penggunaan normal.sudo
? Anda menulissudo rm -rf /*
alih-alihsudo rm -rf ./*
dan boom lagi.sudo rm -rf ./*
. Anda mungkin memiliki akses tulis ke hal-hal di direktori saat ini, jadi Anda tidak perlu sudo untuk perintah itu. Jadi perintah ujung typoed sampai menjadirm -rf /*
, yang menghasilkan serangkaian panjang "Izin ditolak" pesan, membiarkan Anda tahu bahwa Anda perluctrl-c
sebelum sampai ke hal-hal yang Anda benar-benar dapat menghapus, bukan hanya menghapus segala sesuatu dalam/bin
,/boot
,/dev
, dan setengah dari/etc
sebelumnya Anda bahkan menyadari ada sesuatu yang salah.Saya ingin menambahkan sedikit perspektif historis ke jawaban lain. Sayangnya, saya tidak memiliki sumber yang siap kecuali ingatan saya sendiri tentang diskusi Usenet dan artikel majalah.
Beberapa waktu yang lalu, pada tahun 1990-an, distribusi membuatnya lebih mudah untuk menginstal Linux pada perangkat keras Anda sendiri, bahkan dengan tidak banyak pengetahuan komputer. ¹ Dengan demikian, Linux mulai menarik lebih banyak orang yang secara mengejutkan belum pernah dibor sebelumnya sebagai administrator sistem pada beberapa dialek UN * X. Sebaliknya, banyak yang digunakan untuk sistem (pengguna tunggal) seperti Windows 95/98. Dan mereka belajar bahwa sebagian besar tugas administrasi sistem Linux membuatnya perlu untuk bekerja di bawah akun "root" yang aneh itu.
Jadi, beberapa pengguna baru saja login sebagai root dan menggunakan akun itu untuk semua pekerjaan sehari-hari mereka. Mengapa mereka harus mengetik
su
dan mem - root password berulang kali atau login ke tty baru hanya untuk beberapa perintah admin? Tetapi menggunakan root untuk semuanya tentu saja bukan ide yang baik, karena Anda bisa melakukan lebih banyak kerusakan pada sistem Anda dengan beberapa perintah lalai di tempat yang salah. Ini bahkan menyebabkan beberapa distro (apakah itu SuSE?) Untuk memodifikasi latar belakang desktop untuk pengguna root untuk menampilkan peringatan besar bahwa Anda harus menggunakan akun itu hanya untuk tugas admin.Jadi, cara Ubuntu dengan
sudo
memiliki beberapa kelebihan (selain yang sudah terdaftar oleh Panther ).sudo
cache kredensial Anda, jadi untuk beberapa perintah admin secara berurutan, Anda hanya perlu memasukkan kata sandi satu kali (berbeda dengansu
). Ini mengurangi keinginan untuk hanya membuka shell atau terminal baru dengan hak akses root .¹ Dan bagi mereka yang tidak berani melakukannya sendiri, ada pihak yang memasang.
² Tetapi Anda dapat menggunakan perintah seperti
sudo -i
atausudo su - root
untuk mendapatkan shell root setelah Anda masuk sebagai pengguna normal.³ Tapi Anda tentu saja tahu bahwa Anda seharusnya tidak hanya menyalin & menempelkan perintah dari Internet , bukan?
sumber
sudo su -
atausudo su - root
? Karena saya telah melihat klaim serupa misalnya bahwa MacOS X tidak memiliki root tetapi itu benar-benar salah ketika seseorang hanya perlu melakukan perintah pertama ...root
dan kata sandi pada prompt login atau dialog login X dan memulai sesi Anda sebagai root. Tetapi Anda dapat menggunakan salah satu dari perintah Anda (saya lebih sukasudo -i
karena lebih pendek dan saya malas) untuk mendapatkan shell root.Dimungkinkan untuk menonaktifkan login root melalui ssh selama beberapa dekade. Cara Ubuntu menonaktifkan akun root dan membuat orang sudo semuanya tidak lebih dari sebuah trik. Hanya "sudo -s" dan Anda memiliki shell root. Nonaktifkan login root melalui ssh dan biarkan di sana.
sumber
Tergantung pada konfigurasi,
sudo <game ending command>
belum tentu bekerja. Tentu saja, jikasudoers
konfigurasi berbunyi "user ALL = (ALL) ALL", tidaksudo
akan menawarkan perlindungan tambahan. Namun Anda dapat menentukan daftar perintah istimewa yang harus sering Anda jalankan, seperti menginstal paket baru, dan meninggalkan perintah berbahaya sepertirm
.Dengan cara ini Anda dapat menjalankan semua perintah jika Anda masuk sebagai
root
, tetapi karena Anda hanya membutuhkan ini sesekali, risiko menjalankan<game ending command>
akan berkurang secara substansial.sumber
Sudo itu memungkinkan Anda untuk hanya mengizinkan perintah tertentu bukan satu-satunya manfaat sudo daripada su.
Di sebagian besar toko, itu bahkan bukan manfaat yang paling penting.
Dengan sudo, Anda tahu siapa yang melakukan perintah tertentu.
Sekarang mungkin ini tidak masalah bagimu. Misalnya, Anda mungkin satu-satunya pengguna komputer Anda. Jika demikian, maka sudo mungkin tidak lebih baik dari su.
Tetapi banyak host memiliki lebih dari satu admin.
sudo kemudian menjadi sangat berguna karena jika seseorang melakukan kesalahan, sudo memberi tahu Anda siapa yang melakukannya.
Itu memungkinkan Anda untuk memahami mengapa kesalahan terjadi, dan mendidik orang untuk mencegah kesalahan berulang, atau jika perlu, untuk menghapus alat dari seseorang.
Sebagai bonus, ketika orang tahu bahwa tindakan mereka dicatat, mereka seringkali sedikit lebih berhati-hati.
Sudo tidak sempurna.
Jika dua orang melakukan "sudo sh" pada saat yang sama, maka akan sulit untuk mengaitkan perintah ke satu atau yang lain.
Dan admin jahat selalu dapat menghapus atau mengedit log - meskipun melakukan itu dengan bersih tidak selalu semudah yang dipikirkan orang, terutama jika Anda memiliki logging terpusat.
sudo tidak serta merta menghentikan tindakan bodoh atau jahat, untuk semua alasan yang diidentifikasi dalam pertanyaan awal.
Tetapi itu memberi Anda kesempatan yang jauh lebih baik untuk mencegah terulangnya.
sumber
sudo
memungkinkan semuanya. Tentu, Anda dapat mengkonfigurasinya untuk membatasi perintah yang diizinkan dijalankan oleh pengguna, tetapi saya kira itu tidak terjadi dalam pertanyaan seperti yang ditanyakan.