Executando um serviço como root

0

Eu tenho um programa em java que uso para automatizar o processo de criação de configurações de VPN para clientes. O programa chama alguns scripts bash, cria e copia arquivos por aí. Eu tenho que executá-lo sob o usuário root porque toda a configuração da VPN está em / etc / openvpn. Para este diretório eu preciso de privilégios de root. Na mesma máquina eu tenho servidor de aplicativos Glassfish e ele irá chamar o programa Java mencionado. O Glassfish é executado sob um usuário não root.

Qual é a melhor e mais segura forma de executar um programa como usuário root, é claro, sem digitar uma senha se eu rodar via sudo?

    
por kovica 13.11.2012 / 09:13

2 respostas

2

A opção mais segura seria descobrir de que grupo o openvpn é proprietário e incluir um usuário não privilegiado com acesso a ele - A maneira recomendada é criar um usuário openvpn e dar privilégios para usar o openvpn usando o sudo.

Adicionando o usuário que você executa este programa ao grupo (provavelmente com apenas acesso de leitura) para dar acesso ao openvpn, e dando a ele os privilégios sudo necessários (para executar o openvpn - configurações idênticas ao que o usuário openvpn usa) faça o truque com segurança.

Usar root é uma maneira preguiçosa;)

    
por 13.11.2012 / 09:26
0

O que eu descobri é que ao executar um comando como sudo sem digitar a senha, existem duas opções:

  • echo SENHA | sudo -S COMMAND
  • adicionando a seguinte linha ao / etc / sudoers

    nome de usuário ALL = (ALL) NOPASSWD: COMMAND

Note que esta linha tem que estar depois de todas as definições do grupo. Você pode verificar quais privilégios de sudo você usa usando sudo -l . Para este caso, isso produz:

(ALL) ALL
(ALL) NOPASSWD: COMMAND

Isso significa que, para todos os comandos, a senha será necessária, exceto para o COMMAND. Se colocássemos username ALL=(ALL) NOPASSWD: COMMAND antes das definições do grupo, então sudo -l produziria:

(ALL) NOPASSWD: COMMAND
(ALL) ALL

Isso ainda exigiria uma senha para o COMMAND, já que (ALL) ALL é especificado após a linha NOPASSWD.

    
por 14.11.2012 / 11:40

Tags