Pourquoi contourner le mot de passe SUDO?


6

J'ai un script bash que j'utilise pour automatiser une extraction SVN.Le contenu du fichier était:

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

Ensuite, lorsque je double-clique sur le fichier, il me demande quoi faire, je clique sur le bouton " Exécuter dans le terminal ", puis un terminal apparaît et me demande le mot de passe SUDO.Je l'entrerais, le script s'exécutait et le terminal se fermait.

Je voulais donner une sorte d'indication que le script s'est exécuté avec succès, j'ai donc édité mon fichier pour qu'il ressemble à:

#!/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"

Je m'attendais à ce que le terminal reste ouvert et me dise ensuite le message.À ma grande surprise, il s'ouvre et se ferme immédiatement.Le script s'exécute et je n'ai plus besoin de saisir le mot de passe SUDO.

Est-ce vrai?Je ne comprends pas pourquoi cela se produit, cela semble être un problème de sécurité.

19

sudo remembers your password for some time (15 minutes by default). You can make sudo to forget the password by running sudo -k


5

What happens when you run the script directly from the terminal? Typically if the sudo password has been typed once it's remembered for 15 minutes. If you run it graphically the terminal prompt will close after a complete execution. I don't have an SVN repo to play with - however, I did a similar test which will gather input from a user and touch a file by that name.

#!/usr/bin/env bash

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

When executed from the terminal:

alt text

Then double clicked:

alt text

alt text

The prompt closes when complete but does what is requested.


3

To keep the prompt open after executing a script, you can try two things:

  • Add the read command as the last line.
  • To create a launcher that executes a command in terminal and keeps the window open, create a profile for gnome-terminal, say Hold, that does exactly that (look through the profile options) and use the following.

    gnome-terminal --window-with-profile="Hold" -e "/path/to/script"