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 requiretty
um 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 requiretty
esteja definido nas opções padrão de compilação, o sudoers
arquivo a seguir permite que ambos artbristol
e bob
sejam executados /path/to/program
como raiz a partir de um script. artbristol
não precisa de senha e bob
deve ter que digitar uma senha (presumivelmente tty_tickets
está desativada e bob
inseriu 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 artbristol
executar /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
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/01build
com 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/01build
e 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/sudoers
mas não aparece para trabalhar em um/etc/sudoers.d/
arquivo