Oi Isso pode funcionar Tente isso faça o login como root e siga os comandos abaixo $ anexe as linhas abaixo no arquivo sudoers
fred ALL = (TODOS) NOPASSWD: TODOS
Eu tenho uma entrada em / etc / sudo para um usuário que pode executar o sudo para todos os comandos.
fred ALL=(ALL:ALL) ALL
De acordo com a documentação, o ALL final é responsável por permitir o acesso a todos os comandos.
Eu gostaria que o fred pudesse executar uma reinicialização do nginx no Ubuntu 14.04 sem fornecer uma senha sudo, mantendo a capacidade de invocar o sudo para outros comandos. A documentação sudoers não está clara, mas acredito que
fred ALL=(ALL) NOPASSWD: /usr/sbin/service
só permite que o fred execute um comando. Eu quero dar a fred a habilidade de executar todos os comandos como root via sudo, com todos exceto / usr / sbin / service requerendo uma senha.
Olhando para o BNF da documentação
User_Spec ::= User_List Host_List '=' Cmnd_Spec_List (':' Host_List '=' Cmnd_Spec_List)*
Cmnd_Spec_List ::= Cmnd_Spec | Cmnd_Spec ',' Cmnd_Spec_List
Cmnd_Spec ::= Runas_Spec? SELinux_Spec? Solaris_Priv_Spec? Tag_Spec* Cmnd
Runas_Spec ::= '(' Runas_List? (':' Runas_List)? ')'
SELinux_Spec ::= ('ROLE=role' | 'TYPE=type')
Solaris_Priv_Spec ::= ('PRIVS=privset' | 'LIMITPRIVS=privset')
Tag_Spec ::= ('EXEC:' |
'NOEXEC:' | 'FOLLOW:' | 'NOFOLLOW' |
'LOG_INPUT:' | 'NOLOG_INPUT:' | 'LOG_OUTPUT:' |
'NOLOG_OUTPUT:' | 'MAIL:' | 'NOMAIL:' | 'PASSWD:' |
'NOPASSWD:' | 'SETENV:' | 'NOSETENV:')
parece que eu posso usar vários Cmnd_Spec_Lists assim
fred ALL=(ALL : ALL) ALL, NOPASSWD: /usr/sbin/service
Mas a documentação não diz que o último NOPASSWD: Cmnd_Spec irá sobrescrever o acesso root do comando ALL apenas para esse comando.
É o tipo de coisa que eu gosto de acertar na primeira vez, alguém pode confirmar por favor que a última linha funcionará (ou, alternadamente, diga que não vai funcionar) para o propósito específico na mão, por favor?
Além disso, se funcionar para permitir que o fred execute o serviço sem uma senha sudo, existe uma maneira de restringir os argumentos ao serviço, de modo que o fred só funcione sem uma senha no serviço nginx, ou melhor ainda, tão somente reiniciar esse servidor sem uma senha?
Obrigado.
Oi Isso pode funcionar Tente isso faça o login como root e siga os comandos abaixo $ anexe as linhas abaixo no arquivo sudoers
fred ALL = (TODOS) NOPASSWD: TODOS
Os comandos na parte inferior da configuração substituem os acima. É mencionado na documentação no link que não é menos específico , a menos que você os coloque em ordem.
Eu faço isso usando várias linhas. Várias linhas e regras são mais fáceis de ler e entender no futuro, quando as coisas ficam mais complicadas. Várias linhas podem ajudar você a definir o pedido.
# I don't know what order this is interpreted in:
fred ALL=(ALL : ALL) ALL, NOPASSWD: /usr/sbin/service
# I do know what order this is interpreted in:
fred ALL=(ALL) ALL
fred ALL=(ALL) NOPASSWD: /usr/sbin/service
As seguintes linhas vêm do meu arquivo sudoers. Permitindo que os membros do grupo wheel
executem todos os comandos, execute especificamente os comandos no REBOOT
alias sem uma senha.
Cmnd_Alias REBOOT = /sbin/halt, /sbin/reboot, \
/sbin/poweroff, /sbin/shutdown
%wheel ALL=(ALL) ALL
%wheel ALL=(ALL) NOPASSWD: REBOOT
Infelizmente, não tenho muita documentação pública para apontar. A página de manual do sudoers é ridícula. Eu li um grande (fácil de ler) livro sobre ele há algum tempo atrás ( Sudo Mastery por Michael W. Lucas) e este exemplo funciona para mim em vários Linux & Máquinas BSD.