Quero desabilitar o requiretty para que eu possa sudo dentro de scripts, mas prefiro desabilitá-lo apenas para um único comando, em vez de tudo. Isso é possível na configuração dos sudoers?
Quero desabilitar o requiretty para que eu possa sudo dentro de scripts, mas prefiro desabilitá-lo apenas para um único comando, em vez de tudo. Isso é possível na configuração dos sudoers?
Respostas:
Você pode substituir a configuração padrão para opções como requirettyum usuário específico ou um comando específico (ou para uma execução específica como usuário ou host), mas não para um comando específico quando executado como um usuário específico.
Por exemplo, supondo que requirettyesteja definido nas opções padrão de compilação, o sudoersarquivo a seguir permite que ambos artbristole bobsejam executados /path/to/programcomo raiz a partir de um script. artbristolnão precisa de senha e bobdeve ter que digitar uma senha (presumivelmente tty_ticketsestá desativada e bobinseriu 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ê deseja alterar a configuração de um comando com argumentos específicos, é necessário usar um alias de comando (essa é uma limitação de sintaxe). Por exemplo, o fragmento a seguir permite artbristolexecutar /path/to/program --optionem um script, mas não /path/to/programcom outros argumentos.
Cmnd_Alias MYPROGRAM = /path/to/program --option
artbristol ALL = (root) /path/to/program
artbristol ALL = (root) NOPASSWD: MYPROGRAM
Defaults!MYPROGRAM !requiretty
Algo assim:
myuser ALL=(ALL) NOPASSWD:/usr/local/bin/mycmd
Defaults:myuser !requiretty
/etc/sudoers.d/arquivo. CentOS 7.1
/etc/sudoers.d/. - CentOS 7.5 :(
Eu achei que funciona bem para mim usando um arquivo no /etc/sudoers.d. É bastante simples de verificar.
Primeiro, eu criei /etc/sudoers.d/01buildcom o conteúdo:
build ALL=(ALL) NOPASSWD:/bin/date
Defaults:build !requiretty
Em seguida, testou que funciona:
ssh host sudo -n /bin/date
Mon Nov 16 16:04:27 CST 2015
Modifiquei /etc/sudoers.d/01builde excluí a Defaults:linha e, depois disso, recebo:
ssh host sudo -n /bin/date
sudo: sorry, you must have a tty to run sudo
/etc/sudoersmas não aparece para trabalhar em um/etc/sudoers.d/arquivo