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 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?

krzyszto
fonte
O que visudo -cretorna (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?
EightBitTony
1
Além disso, funciona se você listar o nome do script explicitamente no sudo, em vez do curinga (e o nome do arquivo é um link simbólico?).
EightBitTony
Obrigado @EightBitTone. Então, eu encontrei uma solução para este problema de configuração sudoers: quando o interruptor -i está em uso, em seguida, o comando real é beans ALL = (root,apache) NOPASSWD: /usr/bin/ksh -c /opt/renovations/var/script-*.sh e beans ALL = (root,apache) NOPASSWD: /usr/bin/bash -c /opt/renovations/var/script-*.shMas agora eu obter o novo erro, por exemplo:ksh: /opt/renovations/var/script-test.sh: cannot execute
krzyszto
Analisar o arquivo de log / var / log / sudolog foi muito útil para depurar o problema acima (no AIX).
Krzyszto

Respostas:

4

Então, como você 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á-las.

feijões
fonte
sim, é a solução correta. O erro ksh ocorre apenas no ambiente de teste criado para investigar o problema de representação; em tempo real, a produção de tudo funciona corretamente
krzyszto