Tem sudo perguntar a senha do usuário que está mudando para

0
sudo -u user1 command ...

Como posso fazer com que sudo pergunte a senha de user1 em vez da senha do usuário atual?

Plano de fundo : eu quero usar isso em um Git Hook que é executado pelo usuário git , algo como

echo "PasswordOfWww" | sudo -Su www bash -c "cd site; git pull; ./deploy.sh"

Eu tentei usar su www -c "command ..." , mas isso me diz

remote: su: must be run from a terminal

quando eu envio para o repositório.

    
por Niklas R 24.04.2017 / 22:39

1 resposta

2

Você não quer realmente armazenar a senha de qualquer usuário não criptografada no sistema de arquivos, se puder evitá-la. Depende um pouco de quanto você está confiando na portabilidade do código que você tem no git vs. o que você pode armazenar no sistema de arquivos local. Eu recomendo usar o sudo com o NOPASSWD com um comando tão restrito quanto você puder. Você faria uma entrada do / etc / sudoers algo como:

git ALL=(www) NOPASSWD: /usr/local/sbin/deploySite

Em que deploySite tem várias verificações para garantir que o usuário esteja indo para o diretório correto e o script deploy.sh não tem nada de esquemático.

Se você confia no user git para usar a conta do usuário com responsabilidade, você pode usar o NOPASSWD: ALL. Mas você está basicamente permitindo que qualquer pessoa que tenha acesso ao upload tenha acesso para executar qualquer comando que desejar como usuário www.

Mas para responder a pergunta original

Você pode fazer com que o sudo peça a senha do usuário alvo em vez do usuário chamador. Você colocaria uma entrada sudoers como:

Defaults:git targetpw

Então o usuário git terá que digitar a senha do usuário www quando ele executar sudo -u www ... .

    
por 24.04.2017 / 22:58

Tags