Saya sedang mengerjakan skrip yang menjalankan perintah sebagai sudo dan menggemakan satu baris teks SAJA jika hak sudo saya telah habis, jadi hanya jika menjalankan perintah dengan sudo akan meminta pengguna saya (bukan root) untuk mengetikkan kata sandinya lagi.
Bagaimana saya memverifikasi itu? Ingatlah bahwa $(id -u)
bahkan ketika berjalan sebagai sudo akan mengembalikan id pengguna saya saat ini sehingga tidak dapat diperiksa untuk mencocokkannya dengan 0 ...
Saya membutuhkan metode yang akan memeriksa ini dengan tenang.
sudo -n true
dan benar-benar menggunakannya": Dokumentasi agak kabur tentang hal ini, tapi saya pikir menjalankansudo
perintah, bahkan hanyasudo -n true
, akan mengatur ulang batas waktu jam. Either way,-v
secara eksplisit didokumentasikan melakukan hal itu, dansudo -n -v
mungkin lebih tepat daripadasudo -n true
untuk tujuan ini pula.hostname sudo[8870]: username : a password is required ; TTY=pts/0 ; PWD=/home/username ; USER=root ; COMMAND=/usr/bin/true
. Jika Anda menggunakannya dalam bash prompt, misalnya, itu akan menghasilkan banyak pesan kesalahan.Menjalankan:
Jika hak akses sudo Anda telah habis, ini akan keluar dengan kode keluar 1 dan output:
Jika Anda memiliki kredensial cache yang valid, perintah ini akan berhasil dan tidak menghasilkan apa-apa.
Jadi, untuk menyatukan semuanya, inilah scriptlet yang akan secara diam - diam memeriksa apakah Anda memiliki kredensial cache yang valid:
Seperti jawaban / komentar lain yang disebutkan,
-v
opsi ("validasi") untuk sudo diam-diam memperbarui kredensial yang di-cache jika ada atau yang lain diminta untuk otentikasi untuk menghasilkan kredensial yang di-cache, dan-n
opsi ("non-interaktif") mencegah sudo dari menghasilkan setiap permintaan interaktif, seperti permintaan otentikasi.sumber
sudo -nv
berfungsi dengan baik, tetapi mencemari log sistem dengan kesalahan sudo dan info otentikasi pam. Saya perlu memeriksa hak sudo untuk bash prompt saya, jadi itu dieksekusi cukup sering dan log saya hanya terdiri dari suara ini.Dimungkinkan untuk mengurai file stempel waktu sudo secara langsung - Saya menulis util C kecil untuk itu:
sumber