Saya ingin menonaktifkan keharusan kecil sehingga saya bisa sudo dalam skrip, tapi saya lebih suka hanya menonaktifkannya untuk satu perintah daripada segalanya. Apakah itu mungkin dalam konfigurasi sudoers?
Saya ingin menonaktifkan keharusan kecil sehingga saya bisa sudo dalam skrip, tapi saya lebih suka hanya menonaktifkannya untuk satu perintah daripada segalanya. Apakah itu mungkin dalam konfigurasi sudoers?
Jawaban:
Anda dapat mengganti pengaturan default untuk opsi seperti requiretty
untuk pengguna tertentu atau untuk perintah tertentu (atau untuk run-as-user atau host tertentu), tetapi tidak untuk perintah tertentu ketika dijalankan sebagai pengguna tertentu.
Sebagai contoh, dengan asumsi yang requiretty
diatur dalam opsi kompilasi-default, sudoers
file berikut ini memungkinkan keduanya artbristol
dan bob
mengeksekusi /path/to/program
sebagai root dari skrip. artbristol
tidak memerlukan kata sandi padahal bob
harus memasukkan kata sandi (mungkin tty_tickets
mati dan bob
memasukkan kata sandinya pada beberapa terminal baru-baru ini).
artbristol ALL = (root) NOPASSWD: /path/to/program
bob ALL = (root) /path/to/program
Defaults!/path/to/program !requiretty
Jika Anda ingin mengubah pengaturan untuk perintah dengan argumen tertentu, Anda harus menggunakan alias perintah (ini adalah batasan sintaksis). Sebagai contoh, fragmen berikut memungkinkan artbristol
untuk dijalankan /path/to/program --option
dalam skrip, tetapi tidak /path/to/program
dengan argumen lain.
Cmnd_Alias MYPROGRAM = /path/to/program --option
artbristol ALL = (root) /path/to/program
artbristol ALL = (root) NOPASSWD: MYPROGRAM
Defaults!MYPROGRAM !requiretty
Sesuatu seperti ini:
myuser ALL=(ALL) NOPASSWD:/usr/local/bin/mycmd
Defaults:myuser !requiretty
/etc/sudoers.d/
file. CentOS 7.1
/etc/sudoers.d/
. CentOS 7.5 :(
Saya menemukan hasil yang baik bagi saya menggunakan file di /etc/sudoers.d
. Cukup sederhana untuk memverifikasi.
Pertama, saya buat /etc/sudoers.d/01build
dengan isinya:
build ALL=(ALL) NOPASSWD:/bin/date
Defaults:build !requiretty
Kemudian diuji apakah itu berhasil:
ssh host sudo -n /bin/date
Mon Nov 16 16:04:27 CST 2015
Kemudian saya memodifikasi /etc/sudoers.d/01build
dan menghapus Defaults:
baris, dan setelah itu, saya mendapatkan:
ssh host sudo -n /bin/date
sudo: sorry, you must have a tty to run sudo
/etc/sudoers
tetapi tampaknya tidak berfungsi dalam/etc/sudoers.d/
file