É possível para o sudo ler a senha do gnome-keyring ou similar

2

Atualmente, estou usando muito o sudo em vários scripts, o que está se tornando um pouco incômodo, já que alguns scripts não permitem entrada interativa (por exemplo, Makefiles).

Em vez de desabilitar totalmente as senhas sudo, estou pensando que seria legal se o gnome-keyring ou algum software de chaveiro similar pudesse ser usado para lembrar a senha. isso é uma boa ideia? É possível? Alguma solução melhor?

    
por Kotte 09.01.2013 / 14:59

2 respostas

1

Existe uma opção de tempo limite fornecida com o sudo.

/ etc / sudoers :

Defaults:username timestamp_timeout=time_in_minutes

Se você deseja manter os direitos de root, basta iniciar seu script como root. Eu concordo, isso não é o ideal, mas isso é realmente o que você já está fazendo.

Em vez disso, eu preferiria agrupar todas as coisas que podem ser feitas sem o privilégio de root e aquelas solicitando privilégios de root juntos e lançá-las em dois momentos separados ... Isso é o que normalmente é feito:

./configure
make
sudo make install

BTW, se você estiver em uma caixa com o Xorg, você pode usar gksudo em vez de sudo. Mas, novamente, enterrar "sudo" no script não é uma boa prática.

    
por 09.01.2013 / 17:48
3

O que você está pedindo sons factíveis, combinando a opção -A de sudo e o programa gnome-keyring-query .

Basicamente, se você usar a opção -A , em vez de ler a senha de stdin, sudo lerá a senha de um programa externo que você pode especificar com a variável de ambiente SUDO_ASKPASS .

Este programa externo pode ser gnome-keyring-query , uma ferramenta de linha de comando para armazenar / obter senhas de gnome-keyring . Aqui está a ajuda de gnome-keyring-query :

Usage:
    gnome-keyring-query <mode> <name>
Parameters:
    mode     - either 'get' or 'set' (without quotes)
    name     - a name to identify the key
Notes:
    If mode is 'get', then the password is dumped to stdout.
    If mode is 'set', then the password is read from stdin.

Aqui está como você pode prosseguir (eu apenas tentei, funciona).

  1. Instalar gnome-keyring-query (Você terá que compilá-lo se não for empacotado pela sua distro - > upstream URL )
  2. Salve sua senha sudo no gnome-keyring
  3. Você deve conseguir recuperar a senha do chaveiro com algo como: gnome-keyring-query get sudo
  4. Salve esse comando como um script (por exemplo, em / usr / bin / sudo_askpass) e verifique se ele é executável com chmod
  5. export SUDO_ASKPASS=/usr/bin/sudo_askpass
  6. Use sudo -A em vez de sudo.
Dito isto, esteja ciente de que se você salvar sua senha no chaveiro e deixar este chaveiro aberto, qualquer um pode ler sua senha sudo com muita facilidade, usando esta ferramenta de consulta do chaveiro do gnome, ou simplesmente lançando cavalos-marinhos. Portanto, tenha muito cuidado.

    
por 22.05.2013 / 15:55