sudo para lembrar senha para lista de comandos?

2

Existe uma maneira no Linux de fazer o comando sudo lembrar a senha que o usuário digitou na primeira das linhas?

Por exemplo, para uma lista de comandos que o usuário tem que inserir, alguns dos quais requerem um prefixo sudo , como se pode ter certeza de que se o usuário copiar + cola as instruções em um terminal de uma só vez, só é pedida a senha uma vez?

Exemplo:

mkdir ~/acpiinfo ; cd ~/acpiinfo
sudo acpidump > acpidump.txt
# enter password 
sudo acpixtract acpidump.txt
ls *.dat | while read i; do iasl -d "${i}"; done
pid='sudo dmidecode -s system-product-name'
vid='sudo dmidecode -s system-version'
name=$pid.$vid
mkdir "${name}" && cp *.dsl "${name}"/ 
tar czf "${name}.tar.gz" "${name}"/ && ls -l "$( pwd )/${name}".tar.gz
    
por 719016 24.08.2011 / 09:16

4 respostas

1

O sudo duplo é desnecessário :

sudo sh -c "apt-get update && apt-get -y dist-upgrade && apt-get -y autoremove && apt-get autoclean"

Isso funciona bem, mesmo que um comando demore muito tempo.

    
por 24.08.2011 / 15:48
8

Deve fazer isso por padrão. Do sudo manpage:

Once a user has been authenticated, a time stamp is updated and the user may then use sudo without a password for a short period of time (5 minutes unless overridden in sudoers).

Se o seu sistema não estiver fazendo isso, talvez verifique /etc/sudoers . Do suporers manpage:

timestamp_timeout

Number of minutes that can elapse before sudo will ask for a passwd again. The timeout may include a fractional component if minute granularity is insufficient, for example 2.5. The default is 5. Set this to 0 to always prompt for a password. If set to a value less than 0 the user's timestamp will never expire. This can be used to allow users to create or delete their own timestamps via sudo -v and sudo -k respectively.

Assim, parece que a variável timestamp_timeout pode ter sido definida como 0. Ativa visudo e comenta essa linha ou define algo de sua preferência.

    
por 24.08.2011 / 09:39
1

O idioma sudo bash -c 'sudo cmd1; cmd2; sudo cmd3;...' parece lembrar a senha para uma lista de comandos.

# test cases
sudo bash -c 'sudo ls -ld *; sleep 500; sudo ls -ld *'
sudo -k
sudo bash -c 'sudo ls -ld *; sudo -k; sleep 5; sudo ls -ld *'
    
por 24.08.2011 / 09:59
1

sudo -s iniciará um shell como root (possivelmente solicitando sua senha). Você pode então digitar vários comandos sem precisar prefixá-los com o sudo. Quando terminar, exit o shell da raiz.

    
por 24.08.2011 / 21:38