Quais são os propósitos de 'sudo -v &&' e 'sh / dev / stdin' aqui?

1

De link

sudo -v && wget -nv -O- https://download.calibre-ebook.com/linux-installer.sh | sudo sh /dev/stdin

Qual é o objetivo de sudo -v && aqui, dado que man sudo diz

 -v, --validate

Update the user's cached credentials, authenticating the user if necessary. For the sudoers plugin, this extends the sudo timeout for another 15 minutes by default, but does not run a command. Not all security policies support cached credentials.

Qual é o objetivo de sh /dev/stdin ? (No Ubuntu 18.04, sh é traço)

Obrigado.

    
por Tim 18.07.2018 / 00:27

1 resposta

3

What is the purpose of sudo -v && here?

Acredito que isso minimize a surpresa do usuário se / quando eles forem solicitados pela segunda chamada para sudo para sudo sh /dev/stdin . Considere se o comando wget leva alguns segundos para ser concluído; talvez o usuário troque de janelas ou tarefas e volte mais tarde, apenas para encontrar um prompt de senha não solicitado. O que está pedindo sua senha? Por quê?

Com o sudo -v inicial, o usuário é imediatamente solicitado a fornecer sua senha, e a esperança é que o tempo limite do sudo cubra o tempo que o wget leva para ser concluído. Se o usuário já estiver dentro do tempo limite do sudo, o tempo limite é simplesmente estendido.

What is the purpose of sh /dev/stdin?

Aqui sh está sendo chamado com um parâmetro como command_file , que é um arquivo especial - um link para stdin.

NAME dash — command interpreter (shell)

SYNOPSIS

 dash ...
      [command_file [argument ...]]

Como resultado, sh lê o arquivo_de_mandos, esperando e executando comandos a partir dele. Esse "arquivo" stdin especial é conectado através do pipe à saída de wget , então o resultado final é que o conteúdo da URL é enviado para um shell no nível da raiz.

Não sei por que o projeto Caliber escolheu especificamente essa sintaxe. Alternativas incluem:

  • ... | sudo sh
  • ... | sudo sh -
por 18.07.2018 / 01:31