Belum ada yang memiliki so, jadi saya mengumpulkan jawaban yang memiliki semua yang dapat saya pikirkan.
1 Saat Anda menjalankan executable, terkadang OS akan menolak izin Anda untuk melakukannya. Misalnya menjalankan make install dengan awalan sebagai jalur sistem perlu sudo, sedangkan awalan menjadi jalur non-sistem tidak akan diminta untuk sudo. Bagaimana OS memutuskan bahwa menjalankan executable akan membutuhkan lebih banyak hak istimewa daripada yang dimiliki pengguna, bahkan sebelum program melakukan sesuatu?
Tidak, itu tidak dilakukan ketika executable dimulai. Ini dilakukan ketika executable mencoba melakukan sesuatu.
Os akan memeriksa izin sistem file, dan kemampuan (ini tidak tercakup oleh izin sistem file, dan termasuk mengurangi level yang bagus, mknode, beberapa hal jaringan tingkat rendah, membunuh proses orang lain, reboot, mengatur waktu, dll.). Jika Anda tidak memiliki izin maka Anda tidak bisa melakukannya. Root memiliki kemampuan penuh, termasuk CAP_DAC_OVERRIDE (abaikan izin file).
2 Kadang-kadang, menjalankan program tidak akan ditolak izinnya, tetapi program akan dapat melakukan lebih banyak hal jika dijalankan dengan sudo. Sebagai contoh, ketika menjalankan du pada beberapa direktori sistem, hanya dengan sudo ia akan dapat mengakses beberapa direktori. Mengapa OS tidak menolak izin menjalankan program seperti itu, atau ramah memberi tahu lebih banyak hak istimewa, sebelum program dapat berjalan?
OS tidak dapat mengetahui program apa yang akan dilakukan. Jadi tergantung pada program untuk memeriksa izin sebelum dimulai, dan memutuskan apa yang harus dilakukan. Tidak harus melakukan ini sekalipun.
Catatan: di android ada manifes, dalam aplikasi ini menyatakan hak apa yang dapat digunakan. OS akan membunuh aplikasi apa pun yang mencoba menggunakan hak istimewa yang tidak dinyatakan, dan OS tidak selalu menjamin bahwa hak istimewa dapat dihormati. mis. akses jaringan mungkin tidak tersedia.
2 Benarkah setiap kali sudo bekerja, su juga akan bekerja, dan kapan pun su bekerja, sudo juga akan bekerja? atau dengan su, pengguna dapat melakukan lebih banyak daripada dengan sudo? Bagaimana OS memutuskan kapan sudo bekerja, dan kapan su diperlukan?
sudo
dan su
melakukan kurang lebih samething. Beberapa perbedaan adalah penanganan variabel lingkungan dan penghindaran masalah keamanan lainnya. Namun keduanya adalah alat untuk memungkinkan Anda menjadi pengguna lain, dan keduanya memiliki pengguna root default.
su
adalah alat asli, itu mengharuskan Anda untuk memasukkan kata sandi pengguna / grup yang ingin Anda ubah.
sudo
lebih baru dan mengharuskan, secara default, Anda memasukkan kata sandi Anda sendiri, tetapi dapat dikonfigurasikan untuk menerima kata sandi pengguna / grup yang Anda gunakan, atau tidak ada kata sandi sama sekali. Ini juga memungkinkan banyak konfigurasi, perintah apa yang akan bekerja dengannya, untuk siapa, dan bagaimana ia akan mengautentikasi dengan program ini untuk pengguna ini pada mesin ini. Ada juga sudoedit
ini bagian dari sudo
dan dapat digunakan untuk memungkinkan pengeditan sebagai pengguna yang berbeda dan menghindari masalah keamanan sub-penembakan keluar dari editor (memanggil eksekutif dari editor untuk menjalankan proses sewenang-wenang dengan eskalasi hak istimewa).