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 requirettyuntuk 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 requirettydiatur dalam opsi kompilasi-default, sudoersfile berikut ini memungkinkan keduanya artbristoldan bobmengeksekusi /path/to/programsebagai root dari skrip. artbristoltidak memerlukan kata sandi padahal bobharus memasukkan kata sandi (mungkin tty_ticketsmati dan bobmemasukkan 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 artbristoluntuk dijalankan /path/to/program --optiondalam skrip, tetapi tidak /path/to/programdengan 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/01builddengan 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/01builddan 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/sudoerstetapi tampaknya tidak berfungsi dalam/etc/sudoers.d/file