Como desativar requiretty para um único comando em sudoers?

41

Eu quero desativar requiretty para que eu possa sudo dentro de scripts, mas eu prefiro apenas desativá-lo para um único comando, em vez de tudo. Isso é possível na configuração do sudoers?

    
por artbristol 19.06.2013 / 11:25

3 respostas

51

Você pode substituir a configuração padrão de opções como requiretty para um usuário específico ou para um comando específico (ou para um run-as-user ou host específico), mas não para um comando específico quando executado como um específico usuário.

Por exemplo, supondo que requiretty esteja definido nas opções padrão de compilação, o seguinte arquivo sudoers permite que artbristol e bob executem /path/to/program como raiz de um script. artbristol não precisa de senha, enquanto bob precisa digitar uma senha (presumivelmente, tty_tickets está desativado e bob digitou sua senha em algum terminal recentemente).

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

Se você quiser alterar a configuração de um comando com argumentos específicos, será necessário usar um alias de comando (essa é uma limitação de sintaxe). Por exemplo, o fragmento a seguir permite que artbristol execute /path/to/program --option em um script, mas não /path/to/program com outros argumentos.

Cmnd_Alias MYPROGRAM = /path/to/program --option  
artbristol ALL = (root) /path/to/program
artbristol ALL = (root) NOPASSWD: MYPROGRAM
Defaults!MYPROGRAM !requiretty
    
por 20.06.2013 / 18:08
30

Algo parecido com isto:

myuser    ALL=(ALL)    NOPASSWD:/usr/local/bin/mycmd
Defaults:myuser        !requiretty
    
por 19.06.2013 / 14:01
4

Eu achei que funciona bem para mim usando um arquivo em /etc/sudoers.d . É muito simples verificar.

Primeiro, criei /etc/sudoers.d/01build com o conteúdo:

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

Em seguida, testamos que funciona:

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

Em seguida, modifiquei /etc/sudoers.d/01build e excluí a linha Defaults: e, depois disso, recebi:

ssh host sudo -n /bin/date
sudo: sorry, you must have a tty to run sudo
    
por 16.11.2015 / 23:05

Tags