- Saat Anda menjalankan executable, terkadang OS akan menolak izin Anda untuk melakukannya. Misalnya menjalankan
make install
dengan awalan sebagai jalur sistem akan perlusudo
, sedangkan dengan awalan menjadi jalur non-sistem tidak akan dimintasudo
. Bagaimana OS memutuskan bahwa menjalankan executable akan membutuhkan lebih banyak hak istimewa daripada yang dimiliki pengguna, bahkan sebelum program melakukan sesuatu? - Terkadang, menjalankan suatu program tidak akan ditolak izinnya, tetapi program tersebut akan dapat melakukan lebih banyak hal jika dijalankan dengan
sudo
. Misalnya, ketika berjalandu
pada beberapa direktori sistem, hanya dengansudo
itu 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? - Benarkah bahwa kapan pun
sudo
bekerja,su
juga akan bekerja, dan kapan punsu
bekerja,sudo
juga akan berhasil? atau dengansu
, pengguna dapat melakukan lebih banyak daripada dengansudo
? Bagaimana OS memutuskan kapansudo
bekerja, dan kapansu
dibutuhkan?
permissions
sudo
StackExchange untuk Semua
sumber
sumber
Jawaban:
sudo
Anda menjalankannya di bawah beberapa nama pengguna lain. Jika pengguna itu "dapat melakukan lebih banyak hal" daripada pengguna Anda dansudo
konfigurasi memungkinkan Anda untuk melakukan hal-hal ini atas nama pengguna lain maka ya,sudo
akan memungkinkan Anda untuk melakukan lebih banyak hal. Tapi ini tidak perlu. Jika Anda hanya taktiksudo
pada pada awal baris perintah, Anda benar-benarsudo
ing sebagairoot
, sehingga biasanya Anda sedang dapat melakukan lebih banyak hal daripada hanya fana.sudo
Anda perlu memberikan kata sandi pengguna Anda sendiri dan kemudian Anda diizinkan untuk melakukan beberapa hal atas nama pengguna target. Untuk menggunakannyasu
, Anda memerlukan kata sandi pengguna target dan jika Anda memilikinya, Anda menjadi pengguna target sejauh yang menyangkut sistem dan dapat melakukan apa saja yang dapat dilakukan pengguna.Lihat juga
sumber
chmod
ketentuan Anda adalah pemilik file atauroot
.chmod 400 hello && /lib64/ld-linux-x86-64.so.2 ./hello
menghasilkan bagus "Halo, Dunia!" keluaran.Untuk tujuan yang telah Anda jelaskan, OS tidak memutuskan apakah Anda perlu sudo untuk menjalankan program pada awalnya . Sebaliknya, setelah program mulai berjalan dan kemudian mencoba untuk melakukan sesuatu yang tidak diizinkan oleh pengguna saat ini (seperti menulis file
/usr/bin
untuk menginstal perintah baru), OS mencegah akses file. Tindakan untuk mengambil kondisi ini tergantung pada program;make
berhenti berjalan tetapidu
akan melanjutkan ke file / direktori berikutnya setelah mencetak pesan.The
su
dansudo
perintah dua cara yang berbeda dari menjalankan program dengan hak akses root. Mereka mungkin berbeda dalam detail kecil seperti isi lingkungan ketika memulai program baru, tergantung pada opsi yang digunakan. OS tidak perlu memutuskan kapan satu atau yang lain mungkin bekerja.sumber
su
dansudo
merupakan program istimewa.su
perubahan (setelah otentikasi berhasil) id pengguna dan grup yang nyata dan efektif dengan yang Andasu
inginkan. Jadi,su
mirip denganlogin
. Catatan yangsu
dapat digunakan untuk mengubah ke pengguna mana pun, bukan hanya root.sudo
juga mengubah id pengguna dan grup yang nyata dan efektif. Sampai pada titik inisu
dansudo
serupa (tetapi tidak terkait), di luar itu mereka sangat berbeda.Dengan
su
, Anda harus mengetahui kata sandi target, dan begitu Anda mengautentikasi, Anda dapat melakukan apa pun yang Anda inginkan sebagai pengguna itu. Penggunaansu
dapat dibatasi dengan menetapkanSU_WHEEL_ONLY
di/etc/login.defs
. Jika diatur, hanya pengguna dalam grup yangwheel
dapat menggunakansu
, jika tidak maka tidak dibatasi. Terlepas dari itu,su
semuanya atau tidak sama sekali.sudo
sama sekali berbeda sehubungan dengan itu. Dengansudo
Anda dapat menentukan kebijakan yang cukup rumit/etc/sudoers
tentang apa yang boleh dilakukan oleh sudoer (pengguna yang meneleponsudo
). Misalnya, Anda dapat menetapkan kebijakan di mana pengguna tertentu hanya dapat menjalankan program tertentu dengan hak istimewa tertentu, sementara pengguna lain dapat menjalankan program lain dengan hak istimewa lainnya.Salah satu fitur yang mencolok
sudo
adalah Anda dapat mengonfigurasinya sehingga pengguna harus mengotentikasi dirinya sendiri dengan kata sandi sendiri (alih-alih dari target). Dengan demikian,sudo
telah berkembang sangat populer di kalangan admin, karena memungkinkan untuk mengotorisasi pengguna untuk hanya melakukan operasi istimewa tanpa berurusan dengan kata sandi pengguna super, ditambah Anda mendapatkan beberapa tingkat akuntabilitas.sumber
tl; dr Access ditentukan oleh pengguna yang menjalankan aplikasi, dan
sudo
menjalankan aplikasi sebagai pengguna yang berbeda.Versi lengkap:
Tidak tahu. UNIX mengelola izin bukan pada tingkat aplikasi tetapi pada tingkat sistem file: izin diberikan bagi pengguna untuk mengakses file tertentu. Aplikasi kemudian dijalankan atas nama pengguna - setiap proses yang berjalan memiliki pengguna yang terkait dengannya. Pengguna itu digunakan untuk menentukan izin untuk aplikasi itu. Sudo bekerja dengan menjalankan aplikasi atas nama pengguna lain (dengan izin yang terkait dengan pengguna lain itu), yaitu
root
superuser.Adapun contoh Anda:
Jika pengguna memiliki akses tulis ke direktori tertentu, mereka dapat
make install
masuk ke direktori itu. Kalau tidak, mereka mungkin akanroot
melakukannya - dengan menggunakansudo
.Jika Anda tidak dapat mengakses file di direktori,
du
menjalankan untuk Anda juga tidak dapat mengaksesnya.root
dapat mengakses hampir setiap file, jadisudo du
(du
berjalan atas namaroot
) dapat mengaksesnya juga.Iya dan tidak. Ya, jika program benar - benar dijalankan, ia harus berperilaku sama di bawah keduanya
sudo
dansu
. Namun,sudo
menyediakan memungkinkan untuk kontrol yang lebih baik dari siapa yang dapat menjalankan apa dengan set aturan yang disimpan dalam/etc/sudoers
file.su
lebih sederhana - jika Anda tahu kata sandi pengguna target, Anda dapat menjalankan program atas nama pengguna itu.Catatan terakhir: bagaimana aplikasi menangani penolakan akses (di mana ia membatalkan atau mengabaikan atau memperingatkan pengguna) tergantung pada aplikasi.
sumber
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
dansu
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 jugasudoedit
ini bagian darisudo
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).sumber