Memaksa sudo untuk meminta kata sandi

26

Jika saya melakukan hal berikut:

sudo su -
//enter password
exit
exit
//login again straight away
sudo su -

Doa kedua dari sudo tidak meminta kata sandi karena walaupun saya sudah logout lagi, saya masih dalam batas waktu yang berarti bahwa saya tidak perlu dimintai kata sandi lagi.

Karena saya sedang mencoba beberapa privs baru untuk memastikan mereka bekerja, ini benar-benar memperlambat saya sementara saya menunggu batas waktu terjadi.

Apakah ada perintah yang bisa saya jalankan untuk mengatur ulang batas waktu?

Ngomong-ngomong, saya tidak ingin mengubah batas waktu atau memengaruhi pengguna lain!

Kaya
sumber
Jika Anda masih tidak dapat memaksa sudo untuk meminta kata sandi, Anda mungkin juga perlu mengomentari aturan pengguna yang menyebutkan "NOPASSWD" jika ada dalam /etc/sudoers.d/direktori. Saya memiliki baris #includedir /etc/sudoers.ddi /etc/sudoersdan meskipun garis dinonaktifkan oleh komentar tapi kelihatannya seperti #sebelum includedirtidak dibaca sebagai komentar!
baptx

Jawaban:

40

sudo -kAkan membunuh cap waktu batas waktu. Anda bahkan dapat menempatkan perintah setelahnya, sepertisudo -k test_my_privileges.sh

Dari man sudo:

-K Opsi -K (yakin membunuh) seperti -k kecuali bahwa itu menghilangkan cap waktu pengguna sepenuhnya dan tidak dapat digunakan bersama dengan perintah atau opsi lain. Opsi ini tidak memerlukan kata sandi.

-k Ketika digunakan dengan sendirinya, opsi -k (kill) untuk sudo membatalkan cap waktu pengguna dengan menyetel waktu ke Epoch. Lain kali sudo dijalankan kata sandi akan diperlukan. Opsi ini tidak memerlukan kata sandi dan ditambahkan untuk memungkinkan pengguna mencabut izin sudo dari file .logout.

Anda juga dapat mengubahnya secara permanen. Dari man sudoers:

timestamp_timeout

Jumlah menit yang dapat dilewati sebelum sudo akan meminta passwd lagi. Batas waktu dapat mencakup komponen fraksional jika granularitas menit tidak cukup, misalnya 2,5. Standarnya adalah 5. Tetapkan ini ke 0 untuk selalu meminta kata sandi. Jika disetel ke nilai kurang dari 0 stempel waktu pengguna tidak akan pernah kedaluwarsa. Ini dapat digunakan untuk memungkinkan pengguna membuat atau menghapus stempel waktu mereka masing-masing melalui sudo -v dan sudo -k.

Shawn J. Goff
sumber
2
Hati-hati tidaksudo -k command akan menghapus kredensial. Itu hanya mengabaikan kredensial saat ini dan tidak menyimpannya.
user1346466
Hanya untuk menambah ini. Jika Anda ingin mengubah batas waktu timestamp, Anda perlu mengedit sudoersfile sudo visudo. Kemudian Anda menambahkan baris Defaults timestamp_timeout = 0di akhir daftar lainnya Defaultsdi file. Ambil garis keluar lagi untuk kembali ke batas waktu "normal".
Floris
Pertanyaan tindak lanjut saya: unix.stackexchange.com/q/416039/26152
UlfR
5

Jawaban Shawn sangat bagus tetapi ada opsi konfigurasi tambahan yang mungkin berguna dalam situasi ini.

Dari man sudoers:

tty_tickets

Jika diatur, pengguna harus mengotentikasi berdasarkan basis per-tty. Dengan flag ini diaktifkan, sudo akan menggunakan file bernama untuk tty pengguna login di direktori cap waktu pengguna. Jika dinonaktifkan, stempel waktu direktori digunakan sebagai gantinya.

Bendera ini aktif secara default.

Dari man sudo:

Ketika opsi tty_tickets diaktifkan dalam sudoers, cap waktu memiliki per-tty granularity tetapi masih mungkin hidup lebih lama dari sesi pengguna. Pada sistem Linux di mana filesystem devpts digunakan, Solaris sistem dengan filesystem perangkat, serta sistem lain yang menggunakan sistem file devfs yang secara monoton meningkatkan jumlah inode perangkat yang dibuat (seperti Mac OS X), sudo mampu untuk menentukan kapan file stempel waktu tty berbasis basi dan akan mengabaikannya. Administrator tidak boleh mengandalkan fitur ini karena tidak tersedia secara universal.

Saya pikir ini relatif baru. Jika sistem Anda mendukungnya, jika Anda keluar lalu masuk, sudo akan meminta kata sandi Anda lagi. (Saya memiliki sudo -Kskrip logout shell saya juga.)

Arrowmaster
sumber