Ketika menerapkan sudo
perintah yang sebenarnya tidak perlu sudo
,
terkadang tidak menanyakan kata sandi saya. Misalnya di bawah saya
$HOME
,sudo ls
.Tetapi saya ingat bahwa itu berlaku untuk beberapa perintah lain, meskipun saya lupa yang mana.
Jadi saya bertanya-tanya bagaimana sudo
memutuskan apakah akan meminta kata sandi, ketika diberi perintah yang sebenarnya tidak perlu sudo
? Apakah ada aturan dalam /etc/sudoers
menentukan itu?
Masalah saya yang sebenarnya adalah ketika saya menggunakannya du
, kadang-kadang menunjukkan "izin ditolak" untuk beberapa direktori, dan kadang-kadang tidak, mungkin karena saya tidak memiliki izin pada beberapa direktori? Saya berlaku sudo
untuk du
apa pun, dan saya pikir saya akan diminta untuk memasukkan kata sandi, tetapi sebenarnya tidak pada direktori saya sendiri.
Jawaban:
Dalam konfigurasi tipikal, perintahnya tidak relevan. Anda harus memasukkan kata sandi saat pertama kali menggunakan sudo, dan Anda tidak memerlukan kata sandi di shell khusus itu selama 15 menit berikutnya.
Dari perspektif komputer, tidak ada yang namanya "perintah yang membutuhkan sudo". Setiap pengguna dapat mencoba menjalankan perintah apa pun. Hasilnya mungkin tidak lain adalah pesan kesalahan seperti "Izin ditolak" atau "Tidak ada file atau direktori", tetapi selalu memungkinkan untuk menjalankan perintah.
Misalnya, jika Anda menjalankan
du
pada pohon direktori yang memiliki konten yang Anda tidak memiliki izin untuk mengakses, Anda akan mendapatkan kesalahan izin. Itu artinya "izin ditolak". Jika Anda menjalankansudo du
, sudo dijalankandu
sebagai root, jadi Anda tidak mendapatkan kesalahan izin (itulah tujuan akun root: root¹ selalu memiliki izin). Ketika Anda menjalankansudo du
,du
jalankan sebagai root, dansudo
tidak terlibat sama sekali setelahdu
dimulai. Apakah du menemukan kesalahan izin sama sekali tidak relevan dengan cara kerja sudo.Ada perintah yang perlu sudo untuk melakukan sesuatu yang bermanfaat . Kegunaan adalah konsep manusia. Anda perlu menggunakan sudo (atau beberapa metode lain untuk menjalankan perintah sebagai root) jika perintah itu melakukan sesuatu yang berguna ketika dijalankan sebagai root tetapi tidak ketika dijalankan di bawah akun Anda.
Apakah sudo meminta kata sandi Anda tergantung pada dua hal.
authenticate
opsi ke false dan memiliki aturan yang berlaku denganNOPASSWD
tag.timeout
opsi). Anda harus memasukkan kata sandi di terminal yang sama (sehingga jika Anda tetap masuk di satu terminal kemudian meninggalkan terminal itu tanpa pengawasan dan kemudian menggunakan terminal lain, seseorang dapat 'tty_tickets
¹ hampir, tapi itu di luar cakupan utas ini.
sumber
sudo
tidak tahu apakah perintah yang diminta untuk dijalankan perlu dijalankan karena beberapa pengguna lain (biasanya root), yang ia ketahui hanyalah konfigurasinya. Itu menentukan pengguna mana yang diizinkan untuk menjalankansudo
, dengan apa pengguna sebagai "target", dan untuk perintah apa; itu juga menentukan apakah kata sandi diperlukan, yang mana, dan apakah akan menyimpan token otentikasi.Jika Anda menggunakan konfigurasi Debian default, yang terakhir kemungkinan besar adalah yang terlibat di sini:
sudo
akan menanyakan kata sandi Anda saat pertama kali menggunakannya di terminal mana pun, maka ia akan menyimpan token otentikasi untuk jangka waktu tertentu. Jika Anda menggunakan kembalisudo
di terminal yang sama dalam jangka waktu itu, itu tidak akan meminta Anda untuk kata sandi.sumber
sudo du /path/to/some/dir
harus selalu membutuhkan kata sandi saya, atau tidak pernah, terlepas dari/path/to/some/dir
?/etc/sudoers
dapat menentukan perintah dan argumen mereka. Namun jika Anda belum menambahkan hal seperti itu kesudoers
(dan jika sudah, saya harap Anda akan mengetahuinya), argumen tidak akan menjadi masalah (maupun perintah jika Anda memiliki akses umum untuk melakukan root melaluisudo
).sudo
tidak menyimpan kata sandi Anda dalam cache, hanya informasi yang identitas Anda telah diverifikasi satu kali dengan pemeriksaan kata sandi. Karenasudo
merupakan program setuid-root, ia sudah memiliki semua izin yang diperlukan untuk menjalankan apa pun seperti siapa pun - tetapi dipercaya hanya mengizinkan pengguna untuk menggunakannya persis seperti yang ditentukan dalamsudoers
file, dan untuk menolak semua upaya lain untuk menggunakannya . Itu sebabnya penting bahwasudo
ini adalah program yang sangat kecil dan dipelajari dengan sangat baik.Bukan berarti perintah perlu atau tidak perlu sudo. Ketika kamu berlari
sistem dijalankan
command
sebagaiuser
.Apakah doa berhasil atau tidak, dan apakah kata sandi ditanyakan atau tidak, tergantung pada kebijakan keamanan
sudoers
(biasanya dikonfigurasi dalam/etc/sudoers
).sumber