Por que isso está ignorando a senha do SUDO?

6

Eu tenho um script bash que estou usando para automatizar um checkout do SVN. O conteúdo do arquivo era:

#!/bin/bash
cd /var/www-cake
sudo svn checkout file:///usr/local/svn/bash_repo/repo/

Então, quando eu clico duas vezes no arquivo que ele me perguntava o que fazer, eu clicaria no botão " Executar no Terminal " e então um terminal apareceria e me perguntaria pela senha do SUDO. Eu entraria, o script seria executado e o terminal seria fechado.

Eu queria dar algum tipo de indicação de que o script foi executado com sucesso, então eu editei meu arquivo para parecer:

#!/bin/bash
cd /var/www-cake
sudo svn checkout file:///usr/local/svn/bash_repo/repo/
echo "Head revision has been pushed to live server"

Eu esperava que o terminal permanecesse aberto e me dissesse a mensagem depois. Para minha surpresa, agora se abre e imediatamente se fecha. O script é executado e não preciso mais colocar a senha do SUDO.

Isso está certo? Eu não entendo porque isso está acontecendo, parece ser um problema de segurança.

    
por JD Isaacks 29.12.2010 / 16:21

3 respostas

19

sudo lembra sua senha por algum tempo (15 minutos por padrão). Você pode fazer o sudo esquecer a senha executando sudo -k

    
por Florian Diesch 29.12.2010 / 16:41
5

O que acontece quando você executa o script diretamente do terminal? Normalmente, se a senha do sudo tiver sido digitada depois de ser lembrada por 15 minutos. Se você executar graficamente o prompt do terminal será fechado após uma execução completa. Eu não tenho um repo SVN para brincar - no entanto, eu fiz um teste semelhante, que irá reunir a entrada de um usuário e tocar em um arquivo com esse nome.

#!/usr/bin/env bash

echo -n "Hello, enter the file name: "
read NAME
touch $NAME
echo "All done"

Quando executado a partir do terminal:

Em seguida, clique duas vezes:

O aviso fecha quando concluído, mas faz o que é solicitado.

    
por Marco Ceppi 29.12.2010 / 16:42
3

Para manter o prompt aberto após a execução de um script, você pode tentar duas coisas:

  • Adicione o comando read como a última linha.
  • Para criar um lançador que execute um comando no terminal e mantenha a janela aberta, crie um perfil para o gnome-terminal, por exemplo, Hold, que faz exatamente isso (examine as opções de perfil) e use o seguinte.

    gnome-terminal --window-with-profile="Hold" -e "/path/to/script"
    
por MarkovCh1 29.12.2010 / 18:14