Sudoers'da tek bir komut için requestetty nasıl devre dışı bırakılır?


44

Requestetty'yi devre dışı bırakmak istiyorum, böylece senaryolarda sudo yapabiliyorum, ama her şeyi yerine sadece tek bir komut için devre dışı bırakmayı tercih ederim. Bu sudoers config içinde mümkün mü?

Yanıtlar:


55

requirettyBelirli bir kullanıcı veya belirli bir komut için (veya belirli bir kullanıcı olarak çalıştırılan kullanıcı veya ana bilgisayar için) gibi seçenekler için varsayılan ayarları geçersiz kılabilirsiniz , ancak belirli bir kullanıcı olarak yürütüldüğünde belirli bir komut için yapamazsınız.

Örneğin, varsayarak requirettyderleme varsayılan seçeneklerinde kümesidir, aşağıdaki sudoersdosya hem veriyor artbristolve bobyürütmek /path/to/programbir komut dosyasından root olarak. artbristolşifre bobgirmemesi gerektiğinde, şifre girmesi gerekir (tahminen tty_ticketskapalıdır ve bobşifresini son zamanlarda bazı terminallere girmiştir).

artbristol ALL = (root) NOPASSWD: /path/to/program
bob ALL = (root) /path/to/program
Defaults!/path/to/program !requiretty

Bir komutun ayarını belirli bağımsız değişkenlerle değiştirmek istiyorsanız, bir komut takma adı kullanmanız gerekir (bu bir sözdizimi sınırlamasıdır). Örneğin, aşağıdaki parça bir komut dosyasında artbristolçalışmasına izin verir /path/to/program --option, ancak /path/to/programdiğer argümanlarla değil .

Cmnd_Alias MYPROGRAM = /path/to/program --option  
artbristol ALL = (root) /path/to/program
artbristol ALL = (root) NOPASSWD: MYPROGRAM
Defaults!MYPROGRAM !requiretty

31

Bunun gibi bir şey:

myuser    ALL=(ALL)    NOPASSWD:/usr/local/bin/mycmd
Defaults:myuser        !requiretty

Bu işe yarayabilir, /etc/sudoersancak bir /etc/sudoers.d/dosyada iş görünmüyor
8bitjunkie 14:15

Buna değer, benim için, bu düzenleme bir /etc/sudoers.d/dosyaya eklendiğinde işe yaradı . CentOS 7.1
John Erck

Kullanırken benim için çalışmıyor /etc/sudoers.d/. CentOS 7.5 :(
Stefan Lasiewski

4

Bir dosyayı kullanarak benim için iyi çalıştığını buldum /etc/sudoers.d. Doğrulaması oldukça kolaydır.

İlk /etc/sudoers.d/01buildönce içeriklerle hazırladım :

build    ALL=(ALL)    NOPASSWD:/bin/date
Defaults:build !requiretty

Sonra çalıştığını test etti:

ssh host sudo -n /bin/date
Mon Nov 16 16:04:27 CST 2015

Sonra çizgiyi değiştirip /etc/sudoers.d/01buildsildim Defaults:ve ondan sonra alıyorum:

ssh host sudo -n /bin/date
sudo: sorry, you must have a tty to run sudo
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.