Como sudo usando a senha da conta de outro usuário a partir de um script?

2

Eu tenho um script bash em execução como user , uma conta de usuário sem privilégios avaliados. A máquina tem uma segunda conta admin que tem privilégios sudo. Não há senha de root definida.

O script conhece a senha da conta para admin . Como faço para escalar o script até root ?

sudo -S apenas lida com o caso de escalonamento usando a senha da sua conta atual , como admin to root , mas user é sem privilégios, então isso não funcionará. / p>

su admin funciona, mas não fornece nenhuma maneira de obter uma senha de STDIN.

Para reformular, como posso alcançar o programa abaixo?

$ su admin
Password: ******
$ sudo command
Password: ******
    
por Bardi Harborow 22.01.2016 / 15:31

2 respostas

1

Como su só lê um TTY, você terá que dar um. Se a tela do GNU estiver disponível, tente algo assim:

screen -d -m -S foo su -c 'sudo my_command' admin
screen -S foo -X stuff 'admin_password
'

A linha 1 configura uma sessão que executa o comando su especificado, que solicitará a senha do usuário admin . As linhas 2 e 3 "colocam" a senha (e a nova linha à direita para simular pressionando enter, observe as aspas) na sessão nomeada; a espera su irá recebê-lo do arquivo e, supondo que esteja correto, execute o comando especificado ( sudo my_command ).

(Eu tenho certeza que algo similar pode ser feito com o tmux, mas eu não uso isso, então só posso apontar para a man page. Alternativamente, você poderia usar a oportunidade para aprender programação e escrever seu próprio programa para faça apenas a passagem da senha para o su :))

    
por 21.03.2016 / 01:32
-1

Embora não seja exatamente o que você está procurando, uma alternativa é conceder permissões sudo limitadas ao usuário.

Adicione user a /etc/sudoers com permissão apenas para executar sudo como usuário admin e para executar o comando sudo . Exemplo:

user   ALL = (admin) /bin/sudo

Em seguida, execute algo como sudo -u admin sudo commands .

    
por 22.01.2016 / 15:54