Saya telah memberikan izin grup untuk menjalankan perintah tertentu tanpa kata sandi melalui sudo. Ketika salah satu pengguna membuat kesalahan ketik atau menjalankan perintah yang salah, sistem meminta mereka untuk kata sandi mereka dan kemudian mereka mendapatkan kesalahan. Ini membingungkan bagi pengguna jadi saya hanya ingin menampilkan kesalahan daripada meminta mereka untuk kata sandi. Apakah ini mungkin?
Ini adalah contoh file sudoers saya:
%mygroup ALL=(ALL) NOPASSWD:/usr/local/bin/myscript.sh *
Contoh ketika mereka menjalankan skrip yang salah:
# sudo /usr/local/bin/otherscript.sh
[sudo] password for user:
Sorry, user user is not allowed to execute '/usr/local/bin/otherscript.sh' as root on <hostname>.
Output yang diinginkan:
Sorry, user user is not allowed to execute '/usr/local/bin/otherscript.sh' as root on <hostname>. Please check the command and try again.
Perhatikan kurangnya prompt kata sandi.
Google-fu telah gagal saya dan hanya mengembalikan hasil pada tidak meminta password ketika pengguna yang diizinkan untuk menjalankan perintah.
sudo
akan Anda jalankan tanpa memasukkan kata sandi Anda. Dengan fitur yang Anda inginkan, saya bisa mendapatkan informasi itu untuk perintah tertentu.sudo
sama besarnya dengan masalah, jika pengguna memiliki akses tulis ke file-file ini.Jawaban:
Dari membaca cepat
sudo(8)
Dan untuk yang ragu:
Diuji demikian:
Jadi
alias
bagisudo
orang-orang ini kemungkinan akan melakukan trik, untuk mencegah prompt kata sandi. Sekarang mengapa ini memerlukan kompilasi khusussudo
, saya tidak tahu, saya baru saja membaca manual.sumber
alias sudo="$(which sudo) -n"
di / etc / bashrc, kemudian gunakansudo
(perilaku yang disesuaikan) ataucommand sudo
(perilaku default) seperti yang diinginkan.Satu hal yang berhasil bagi saya, (Sudo versi 1.8.17p1), tetapi hanya memenuhi sebagian dari masalah Anda, adalah mengatur jumlah kata sandi yang mencoba menjadi 0.
Ini membuat sudo keluar dengan kode 1 ketika perintah apa pun yang membutuhkan kata sandi dicoba. Namun, itu tidak menghasilkan pesan kesalahan apa pun.
sumber
Kamu tidak bisa.
Tidak ada cara untuk mengetahui siapa Anda sampai Anda mengotentikasi, dan, secara default Anda tidak dapat mengautentikasi tanpa kata sandi.
Anda dapat mengubah otentikasi untuk menggunakan kunci USB, pemindai sidik jari, otentikasi suara, pengenalan wajah, atau banyak hal lainnya, tetapi intinya sama.
Anda tidak dapat mengautentikasi, tanpa mengautentikasi DAN sebelum Anda mengotentikasi sudo, tidak ada bisnis yang memberi tahu Anda apa yang dapat atau tidak dapat Anda jalankan.
sumber
@StrongBad membuat komentar yang layak menjadi jawaban:
Saya pikir solusi terbaik adalah dengan menulis skrip wrapper yang selalu memanggil
sudo
dengan parameter yang benar. (Termasuk-n
)Skrip wrapper dapat melakukan parsing argumen, dll. Sehingga skrip sudo yang dipanggil menjadi sekecil mungkin dan karenanya cenderung memiliki bug.
sumber
Ini tidak mungkin. Satu-satunya cara adalah mengubah kode sumber dan kompilasi garpu Anda sendiri
sudo
sumber