Sintaxe para atualizar o arquivo / etc / sudoers

4

Qual é a diferença entre as linhas abaixo?

user1 ALL=(ALL) NOPASSWD: /etc/init.d/service-script
user1 ALL=NOPASSWD:/etc/init.d/service-script

As linhas estão corretas e com alguma diferença? Eu preciso fornecer acesso sudo ao user1 para executar o script de serviço.

    
por arunp 25.04.2018 / 14:29

2 respostas

3

A primeira linha tem a sintaxe correta.

user1 ALL=(ALL) NOPASSWD: /etc/init.d/service-script

Isso significa que: user1 pode, em TODOS os hosts que usam esse arquivo /etc/sudoers , se tornar TODOS os usuários para executar /etc/init.d/service-script sem uma solicitação de senha.

A segunda linha tem uma sintaxe incorreta, pelo menos para versões modernas de sudo . Se você editou /etc/sudoers com o comando visudo recomendado, você receberia uma mensagem semelhante a esta após sair do seu editor favorito:

File /etc/sudoers.tmp saved
>>> /etc/sudoers: syntax error near line 28 <<<
What now?

Ao digitar um ponto de interrogação, você receberá uma lista de opções:

Options are:
  (e)dit sudoers file again
  e(x)it without saving changes to sudoers file
  (Q)uit and save changes to sudoers file (DANGER!)

What now? 

Seria melhor selecionar 'e' e remover a linha incorreta, ou 'x' para descartar todas as edições feitas desta vez.

Você pode querer digitar um comentário como este no arquivo /etc/sudoers para lembrá-lo da sintaxe correta:

# WHO  WHERE = (AS WHOM) WHAT

Entre as partes (AS WHOM) e WHAT , você pode adicionar algumas tags terminadas por dois pontos que podem afetar alguns detalhes do procedimento.

Como o script de serviço está localizado em /etc/init.d, aparentemente ele deve ser executado como root. Então a linha "ideal" do / etc / sudoers seria:

user1 ALL=(root) NOPASSWD: /etc/init.d/service-script

O usuário deve executá-lo como:

sudo /etc/init.d/service-script

ou explicitamente

sudo -u root /etc/init.d/service-script

Adicionar argumentos ao final da linha de comando é permitido.

    
por 25.04.2018 / 16:08
1

Ambos farão o que você espera, a diferença é que o primeiro permitiria ao usuário1 executar o comando como qualquer outro usuário. No segundo, o comando será executado como root (que é mais provavelmente o que você espera).

    
por 25.04.2018 / 16:04