sudo - representando um usuário

8

Estou tentando usar o comando sudo e o arquivo sudoers corretamente para poder executar um comando como outro usuário.

Eu tenho meu arquivo sudoers configurado da seguinte maneira:

beans ALL = (root,apache) NOPASSWD: /opt/renovations/var/script-*.sh

root, apache e beans fazem parte do grupo beans.
Também / opt possui 755 permissões, enquanto o diretório / opt / renovations e seus subdiretórios são de propriedade do grupo e usuário beans.

O comando que estou tentando executar como beans é:

sudo -n -u apache -i /opt/renovations/var/script-test.sh  

-n: é para que eu não seja solicitado para uma senha, pois isso será executado por um cron
-u: é para que eu possa representar o usuário do apache -i: é para simular um login e meu perfil está carregado. Eu preciso disso para acessar as variáveis de ambiente no .profile.

O problema é que quando eu executo o comando sudo, recebo a seguinte mensagem:

sudo: sorry, a password is required to run sudo

Eu tentei executar isso tanto no AIX quanto no Ubuntu, mas o problema está nos dois sistemas. Isso funciona se eu correr:

sudo -n -u apache /opt/renovations/var/script-test.sh

Mas sem o -i, meu ambiente não contém todas as variáveis de ambiente que preciso estar lá.

Existe algo que eu preciso atualizar no meu arquivo sudoers para que isso seja possível?

    
por krzyszto 01.08.2014 / 13:56

1 resposta

4

Então, como você mesmo disse @krzysto, a solução é adicionar o seguinte ao arquivo sudoers

beans ALL = (root,apache) NOPASSWD: /usr/bin/ksh -c /opt/renovations/var/script-*.sh 
beans ALL = (root,apache) NOPASSWD: /usr/bin/bash -c /opt/renovations/var/script-*.sh

A próxima parte que falta é garantir que o grupo tenha permissões de execução nos scripts, para que você possa executá-los.

    
por 01.08.2014 / 16:26

Tags