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 de beans.
O / opt também possui 755 permissões, enquanto o diretório / opt / renovations e seus subdiretórios são de propriedade do usuário e do grupo de beans.
O comando que estou tentando executar como beans é:
sudo -n -u apache -i /opt/renovations/var/script-test.sh
-n: é para que não seja solicitada uma senha, pois isso será executado por um cron
-u: é para que eu possa representar o usuário apache
-i: é para simular um login e meu .profile está carregado. Eu preciso disso para acessar as variáveis de ambiente em .profile.
O problema é que, quando executo o comando sudo, recebo a seguinte mensagem:
sudo: desculpe, é necessária uma senha para executar o sudo
Eu tentei executar isso no AIX e no Ubuntu, mas o problema está nos dois sistemas. Isso funciona se eu executar:
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 eu preciso estar lá.
Há algo que eu precise atualizar no meu arquivo sudoers para que isso seja possível?
visudo -c
retorna (verifica se há erros nos sudoers). Além disso, você pode confirmar a versão completa do AIX (oslevel -s
) e a versão do sudo instalada?beans ALL = (root,apache) NOPASSWD: /usr/bin/ksh -c /opt/renovations/var/script-*.sh
ebeans ALL = (root,apache) NOPASSWD: /usr/bin/bash -c /opt/renovations/var/script-*.sh
Mas agora eu obter o novo erro, por exemplo:ksh: /opt/renovations/var/script-test.sh: cannot execute
Respostas:
Então, como você disse @krzysto, a solução é adicionar o seguinte ao arquivo sudoers
A próxima parte que falta é garantir que o grupo tenha permissões de execução nos scripts, para que você possa executá-las.
fonte