Saya telah menggunakan Linux untuk sementara waktu sekarang dan setiap kali saya mengetik sudo
saya pikir saya beralih ke pengguna root untuk perintah.
Tampaknya ini tidak benar karena yang saya butuhkan adalah kata sandi akun pengguna saya. Saya menduga karena saya belum bekerja dengan banyak pengguna, saya belum benar-benar memperhatikan hal ini di dunia nyata.
Saya tidak yakin bagaimana Ubuntu mengatur akun pertama saya. Apakah ada pengguna root? Apakah saya root? Saya kira saya baru saja membuat pengguna baru pada saat instalasi tetapi itu memberi saya hak akses root? Hanya sedikit bingung di sini ...
Jadi mengapa saya diizinkan menjalankan perintah root dengan kata sandi pengguna saya?
sudo
memiliki bit set "setuid". Jadi ini berjalan sebagai pengguna yang memilikinya (yang merupakan root pada semua sistem standar jika saya tidak salah), bukan pengguna yang meluncurkannya.sudo
kemudian memuat/etc/sudoers
file dan memeriksa apa yang diizinkan berdasarkan siapa yang meluncurkannya.sudo
hak istimewa, mungkin bekerja di lokasi yang didistribusikan secara geografis dan pada 24 × 7 shift, Anda ingin dapat segera mencabut akses istimewa satu orang (misalnya, jika Anda mencurigai integritasnya). Jika semua orang menggunakan kata sandi root satu-satunya, dan Anda mengubahnya tanpa koordinasi sebelumnya, kekacauan dapat terjadi. ...Jawaban:
Secara rinci ini bekerja dengan cara berikut:
/usr/bin/sudo
file yang dapat dieksekusi memiliki setuid bit yang ditetapkan, sehingga bahkan ketika dijalankan oleh pengguna lain, ia dijalankan dengan id pengguna pemilik file (root dalam kasus itu).sudo
memeriksa dalam/etc/sudoers
file hak istimewa apa yang Anda miliki dan apakah Anda diizinkan untuk menjalankan perintah yang Anda minta. Secara sederhana,/etc/sudoers
adalah file yang mendefinisikan pengguna mana yang dapat menjalankan perintah mana yang menggunakansudo
mekanisme.Begitulah tampilan file itu di Ubuntu saya:
Baris ketiga adalah apa yang mungkin menarik minat Anda. Ini memungkinkan siapa saja dalam grup "sudo" untuk menjalankan perintah apa pun sebagai pengguna apa pun.
Ketika Ubuntu mengatur akun pertama selama instalasi, Ubuntu menambahkan akun itu ke grup "sudo". Anda dapat memeriksa grup mana yang menjadi milik pengguna dengan
group
perintah.sudo
meminta Anda untuk kata sandi. Mengenai fakta bahwa itu membutuhkan kata sandi pengguna, bukan kata sandi root, yang merupakan kutipan dari panduan sudoers :Namun, pada kenyataannya,
sudo
tidak perlu kata sandi pengguna Anda untuk apa pun. Itu memintanya hanya untuk memastikan bahwa Anda benar-benar Anda dan untuk memberi Anda semacam peringatan (atau kesempatan untuk berhenti) sebelum memanggil beberapa perintah yang berpotensi berbahaya. Jika Anda ingin mematikan permintaan kata sandi, ubah entri sudoers ke:Setelah otentikasi
sudo
memunculkan proses anak yang menjalankan perintah dipanggil. Anak mewarisi id pengguna root dari induknya -sudo
proses.Jadi, jawablah pertanyaan Anda dengan tepat:
Kamu benar. Setiap perintah diawali dengan
sudo
dijalankan dengan id pengguna root.Ya, ada akun pengguna root, terpisah dari akun pengguna Anda yang dibuat selama instalasi sistem. Namun, secara default di Ubuntu Anda tidak diizinkan masuk ke terminal interaktif sebagai pengguna root.
Tidak, Anda bukan root. Anda hanya memiliki hak istimewa untuk menjalankan perintah individual sebagai root , menggunakan
sudo
mekanisme yang dijelaskan di atas.Anda harus memasukkan kata sandi pengguna hanya karena
sudo
mekanisme keamanan internal. Itu bisa dengan mudah dimatikan. Anda mendapatkan kekuatan root Anda karena setuid sedikit/usr/bin/sudo
, bukan karena kata sandi yang Anda masukkan.sumber
sudo
dapat dijalankan tanpa memasukkan kata sandi saya. Jawaban bagus!rootpw
tanda masuksudoers
.sudo su - root
akan melakukan hal itu dan memberikan terminal root. Namun Anda tidak dapat dengan mudah masuk ke sesi desktop sebagai root.sudo
memiliki hak istimewa root dengan sendirinya, dan ia memutuskan apakah akan memberikan itu kepada Anda berdasarkan file konfigurasi.Intinya
sudo
adalah memberi Anda hak istimewa orang lain (biasanya root) tanpa meminta kata sandi akun lain ini (tidak sepertisu
).sudo
meminta kata sandi Anda di sini hanya untuk memastikan orang yang lewat tidak akan menyalahgunakan terminal Anda yang tidak terkunci.Ubuntu dan banyak Linux dan OS Unix lainnya memberikan akun awal yang dibuat pada saat instalasi hak untuk menjalankan perintah apa pun sebagai
root
.Meskipun
root
masih merupakan akun di Linux,root
login langsung dinonaktifkan secara default untuk keamanan dan keterlacakan yang lebih baik.sumber
Piotr memberikan penjelasan yang sangat bagus tentang cara
sudo
kerjanya. Namun, dia tidak benar-benar memotivasi mengapa ini bekerja seperti ini, jadi saya akan mencoba menambahkannya di sini.Sebelum
sudo
perintah dibuat, kami memilikisu
perintah. Perintah ini memungkinkan satu pengguna untuk menjalankan perintah sebagai pengguna lain, biasanyaroot
(seperti halnyasudo
, ini adalah target pengguna default). Itu benar-benar tanpa diskriminasi, Anda dapat menjalankan perintah apa pun. Karena dapat digunakan oleh pengguna mana pun, secara efektif setara dengan masuk sebagai pengguna itu, itu mengharuskan Anda untuk mengetahui kata sandi pengguna target.Pada titik tertentu, kontrol akses sedikit lebih ditambahkan: untuk menggunakan
su
, Anda harus menjadi anggotawheel
grup. Tetapi karena Anda masih bisa menjalankan perintah apa pun, masih masuk akal untuk meminta Anda mengetahui kata sandi mereka.Namun, mengharuskan pengguna untuk saling mengetahui, atau superuser, kata sandi itu tidak terlalu aman. Seringkali Anda hanya ingin memberi pengguna tertentu akses terbatas ke beberapa akun lain (ini adalah bagian dari konsep keamanan yang disebut prinsip privilege paling tidak penting ). Ini juga mempersulit akuntabilitas: jika banyak orang mengetahui kata sandi akun, dan akun itu terlibat dalam kesalahan atau penyalahgunaan, Anda tidak dapat memberi tahu siapa di antara mereka yang benar-benar melakukannya.
Jadi
sudo
diciptakan. Alih-alih mengizinkan pengguna untuk mengeksekusi perintah apa pun, ia memiliki file konfigurasi yang rumit, disinggung secara singkat dalam jawaban Piotr, yang menentukan secara tepat siapa yang dapat menggunakannya, pengguna apa yang dapat mereka gunakan untuk beralih, dan perintah apa yang mereka boleh jalankan. Dengan kendali penuh atas siapa yang dapat melakukan apa kepada siapa, kita tidak perlu lagi memberikan kata sandi akun target kepada pengguna; jika kami melakukannya, mereka dapat dengan mudah mem-bypass semua kontrol dalam file konfigurasi dengan masuk sebagai pengguna itu. Sebagai gantinya, kami biasanya hanya mengharuskan mereka untuk membuktikan bahwa mereka adalah mereka yang masuk sebagai, dengan memasukkan kata sandi mereka sendiri - ini dimaksudkan untuk mencegah seseorang mengambil keuntungan dari sebuah akun jika terminal dibiarkan tanpa pengawasan.Persyaratan ini dicabut untuk superuser - akun ini dapat melakukan hampir semua hal untuk sistem tanpa menggunakan
sudo
, sehingga dianggap berlebihan. Mungkin juga untuk menentukan dalam file konfigurasi bahwa pengguna tidak perlu memasukkan kata sandi sama sekali - beberapa organisasi menggunakan ini ketika mereka yakin keamanan fisik lingkungan workstation mereka cukup untuk mencegah penyalahgunaan.sumber
su
juga mencatat, tetapi karena itu baru memulai shell baru, itu hanya mencatat fakta bahwa seseorang menjalankannya.sudo
memang memungkinkan hak istimewa untuk dicabut, tanpa harus menerbitkan kembali kata sandi root untuk semua orang yang membutuhkannya.sudo
memungkinkan Anda membatasi perintah mana yang dapat dijalankan pengguna, Anda dapat mencoba memastikan bahwa Anda tidak memberi mereka akses ke perintah yang akan menimpa log.Jawaban atas pertanyaan Anda adalah:
Ketika Anda menjalankan perintah dengan sudo , Anda menjalankan perintah dengan privilege yang ditinggikan , yaitu privilege root . Anda hanya perlu mengetikkan kata sandi pengguna normal Anda karena Anda (pengguna) telah ditambahkan ke file sudoers yang memberi Anda hak root .
sumber
sudo
tidak selalu memberikan hak istimewa yang ditinggikan, tetapi itu berjalan pada hak istimewa yang ditinggikan, setelah melakukan hal tersebut (memeriksa otentikasi, ia dapat kehilangan hak istimewa). Perlu hak yang lebih tinggi untuk dapat mengubah pengguna.sudo
memang menggunakan hak istimewa yang ditinggikan (tapi itu tidak unik untuk sudo, mis. Mount juga), tetapi perintah yang Anda panggil yaitucommand
disudo command
mungkin tidak (tergantung pada apa yang diatur dalam/etc/sudoers
).Pertama, menonaktifkan akun biasanya dilakukan dengan mengatur kata sandi terenkripsi ke *, yang bukan nilai terenkripsi dari string apa pun. Saya tidak dapat memeriksa sekarang, tapi saya percaya itulah yang dilakukan Ubuntu untuk root juga. Jadi secara teknis, tidak ada kata sandi root di Ubuntu.
Tapi sudo mendahului Ubuntu; itu dirancang untuk sistem di mana tentu saja ada kata sandi root. Jadi mengapa tidak memerlukan kata sandi root? Pada dasarnya, sudo dirancang untuk memberikan izin untuk menjalankan perintah khusus untuk pengguna tertentu --- mis., Memungkinkan akses root pengembang untuk memulai kembali aplikasi web, tetapi tidak untuk memulai server yang sewenang-wenang. Sebaliknya, mengetahui kata sandi root memberi Anda akses tanpa batas; Anda dapat menggunakan login atau su untuk membuka shell root dan menjalankan perintah sewenang-wenang. Karena sudo harus bekerja untuk orang-orang tanpa tingkat akses itu, itu tidak bisa memerlukan kata sandi root untuk dijalankan.
sumber