Bagaimana sudo mengingat Anda sudah memasukkan kata sandi root?

27

Saat menggunakan sudo di Linux, ia meminta kata sandi root, tetapi hanya saat pertama kali Anda menjalankannya. Jika Anda menjalankan perintah sudo lain, ingat Anda sudah memasukkan kata sandi sebelumnya dan tidak memintanya:

thomas@ubuntu:~$ sudo id
[sudo] password for thomas: ******
uid=0(root) gid=0(root) groups=0(root)
thomas@ubuntu:~$ sudo id
uid=0(root) gid=0(root) groups=0(root)

Bagaimana sudo melakukannya? Di mana informasi ini disimpan? Ide saya adalah ia mengingat id terminal (seperti poin / 1), tetapi di mana ini disimpan? Proses sudo pertama berakhir ketika dilakukan dengan perintah, kan?

Saya tahu sudo adalah program setuid, jadi ia memiliki hak akses root sepanjang waktu, tetapi saya masih tidak dapat memikirkan tempat yang baik untuk menyimpan informasi yang telah dimasukkan oleh pengguna dengan kata sandi. Apakah ada beberapa proses daemon yang terlibat?

kuba
sumber
1
Ada gambaran yang cukup bagus tentang cara kerja sudo di sini: aplawrence.com/Basics/sudo.html Ini merinci perilaku sudo dengan mengingat kata sandi (misalnya batas waktu default adalah 5 menit), meskipun tidak mencakup rincian tentang bagaimana sudo mengingat kata sandi. . Tapi tetap menarik.
12
Hanya koreksi kecil, sudo meminta kata sandi Anda , bukan kata sandi root

Jawaban:

16

Di mana informasi ini disimpan?

Mungkin di bawah /var/db/sudoatau /var/run/sudodan Anda mungkin akan menemukan direktori nama pengguna dengan file di bawahnya yang dipesan dengan nomor tty.

Hak istimewa yang sebenarnya diberikan, termasuk berapa lama sesi berlangsung sebelum Anda harus memasukkan kata sandi lagi tergantung pada bagaimana pengaturan sudoers. Ada pengaturan untuk memberikan / membatasi banyak hal yang berbeda, tetapi itu tidak disimpan dalam file-file ini yang hanya menyimpan cap waktu. Berapa lama sesi berlangsung, atau kapan sudo perlu meminta kata sandi Anda lagi, ditentukan oleh delta waktu saat ini dan cap waktu sesi dalam direktori ini, dan berapa lama sudo diatur untuk memungkinkan sesi berlangsung.

Jon Lin
sumber
2
Sejauh berapa lama, dari dokumen ubuntu : "Saat menggunakan sudo, kata sandi Anda disimpan secara default selama 15 menit."
11

Coba man sudodan lihat bagian FILES:

/ var / lib / sudo Direktori yang berisi perangko waktu

Dan di SECURITY NOTES

sudo akan memeriksa kepemilikan direktori cap waktunya (/ var / lib / sudo secara default) [...]

(halaman manual dari Debian 6.0.4)

Andreas Florath
sumber