Saya tahu ini adalah pertanyaan yang sangat lama tetapi inilah yang saya lakukan dalam skrip hari ini. Dengan asumsi bahwa menjadi sudo berarti dapat menjalankan perintah apapun sebagai sudo (atau, setidaknya, uptime)
CAN_I_RUN_SUDO=$(sudo -n uptime 2>&1|grep "load"|wc -l) if [ ${CAN_I_RUN_SUDO} -gt 0 ] then echo "I can run the sudo command" else echo "I can't run the Sudo command" fi
Namun, jika pengguna Anda memiliki batasan dalam visudo, pemeriksaan ini tidak akan cukup, misalnya jika pengguna Anda hanya dapat menggunakan perintah make. Coba jalankan beberapa perintah yang Anda tahu akan berhasil. Anda dapat menambahkan filter grep -v Sorry, misalnya:$(sudo -n uptime 2>&1|grep "load" | grep -v Sorry|wc -l) untuk menghindari false positive tersebut.
-n
opsi tersedia di versi sudo yang lebih baru, tetapi seperti yang Anda nyatakan itu bukan opsi. Tidak ada cara nyata untuk melakukan apa yang Anda cari selain hanya mencoba sudo dan melihat apakah itu kembali dengan prompt kata sandi. Jika kekhawatiran Anda adalah Anda menginginkan indikasi visual, mengapa tidak mulai melakukan sudo /bin/bash untuk memulai sesi root bash? Perhatikan bahwa ini tidak aman, tetapi juga agak tidak aman jika seseorang menyadari prompt Anda berubah pada sudo.
Untuk menyederhanakan jawaban yang diberikan oleh @wags007
if sudo -n true
then
sudo id
else
echo "sorry, but did not want to bother you"
fi
Namun, jika dalam konfigurasi https://www.sudo.ws/man/1.8.15/sudoers.man.html Anda memiliki defaults mail_badpass
akan ada email yang dikirim untuk setiap tes yang hasilnya salah (akan diminta). Untuk menghindari gangguan seperti itu, ubah bagian dari file sudoers Anda menjadi
Defaults mail_badpass
Defaults! /bin/true !mail_badpass
Akibatnya surat peringatan keamanan dikirim untuk semua perintah kecuali /bin/true. Ya, seseorang sekarang dapat mencoba memaksa kata sandi dengan memanggil sudo true
berkali-kali tanpa batas tanpa mengirimkan email peringatan keamanan apa pun.
Catatan:Selalu gunakan visudo
alih-alih editor favorit Anda untuk mengedit file sudoers. Jika tidak melakukannya, Anda berisiko terkunci.