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.
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
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.
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.
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 *'
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.
Tags command-line sudo