Jika saya memahami komentar Anda dengan benar, masalah di sini adalah bahwa perintah akan dikeluarkan melalui koneksi yang tidak memiliki kemampuan untuk memasukkan kata sandi yang sudo default untuk meminta. Juga, dalam banyak distribusi OS, sudo akan default untuk memerlukan TTY - yang mungkin tidak dimiliki oleh program ini.
Namun, sudo dapat memiliki struktur izin yang sangat halus, memungkinkan untuk memungkinkan satu atau lebih pengguna untuk mengeluarkan satu perintah tertentu tanpa kata sandi dan TTY. Di bawah ini, saya akan menunjukkan tiga cara untuk mengkonfigurasi ini untuk kebutuhan Anda. Apa pun yang Anda pilih, pengguna sekarang dapat mengeluarkan perintah sudo rndc reload
tanpa harus memasukkan kata sandi.
(Juga, ini mungkin tidak perlu, tapi ... harap ingat untuk membuat salinan cadangan file sudoers Anda sebelum mengeditnya, untuk menyimpan shell di tempat Anda root terbuka jika Anda perlu kembali ke cadangan, dan untuk mengedit menggunakan visudo
alih-alih sudo vi /etc/sudoers
. Mudah-mudahan tindakan pencegahan ini tidak perlu, tapi ... lebih baik memilikinya dan tidak membutuhkannya daripada sebaliknya!)
1. Jika Anda tidak ingin meminta TTY untuk permintaan apa pun
Cara termudah untuk menyingkirkan persyaratan TTY (jika ada) adalah memastikan bahwa baris yang dimulai dengan Defaults
di /etc/sudoers
tidak mengandung kata requiretty
- sebaliknya, seharusnya berisi !requiretty
. Namun, jika Anda melakukan ini, itu berarti bahwa tidak ada perintah sudo yang membutuhkan tty!
Anda juga perlu menambahkan baris
rndcuser ALL = (root) NOPASSWD: /path/to/rndc reload, /path/to/dnssec-keygen, /path/to/other/program
2. Jika Anda ingin meminta TTY untuk semua pengguna kecuali yang ini
Ini dapat dilakukan dengan menetapkan default untuk pengguna yang satu ini, seperti ini:
Defaults:rndcuser !requiretty
rndcuser ALL = (root) NOPASSWD: /path/to/rndc reload, /path/to/dnssec-keygen, /path/to/other/program
3. Jika Anda ingin mengirim kembali TTY untuk semua perintah kecuali perintah yang satu ini oleh pengguna yang satu ini
Ini sedikit lebih rumit, karena sintaks dari file sudoers. Anda harus membuat alias alias untuk perintah, dan kemudian menetapkan default untuk alias perintah itu, seperti:
Cmnd_Alias RNDC_CMD = /path/to/rndc reload, /path/to/dnssec-keygen, /path/to/other/program
Defaults!RNDC_CMD !requiretty
rndcuser ALL = (root) NOPASSWD: RNDC_CMD
sudo
. Apa keberatan bisnis Anda terhadap penggunaannyasudo
untuk ini?