Comment créer un fichier exécutable (un script shell qui n'est pas de ma propre création), quand on y accède, une petite fenêtre demandant le mot de passe s'ouvre lis.)
Plutôt que de toucher au script Shell actuel, vous pouvez faire un wrapper pour l'appeler avec plus de permissions.
Enregistrez le script ci-dessous, rendez-le exécutable (par exemple, chmod +x mysudowrapper.sh
) et utilisez-le comme suit:
./mysudowrapper.sh /path/to/originalscript.sh
Ensuite, rendez le originalscript.sh
uniquement exécutable par root
:
chown root:root /path/to/originalscript.sh
chmod go-x /path/to/originalscript.sh
Essaye-le:
/path/to/originalscript.sh
bash: /path/to/originalscript.sh: Permission denied
Via un script wrapper comme ci-dessus devrait fonctionner. De là, vous devriez être tous ensemble.
#!/bin/bash
# Wrapper to run commands with Sudo. Uses gksudo in a GUI environment, falls back on
# plain Sudo in non-GUI environment.
# Info: http://askubuntu.com/a/244690/88802
# Author(s): Gert van Dijk
# Disclaimer: No warranties whatsoever. I'm not responsible for any damage here.
# Purpose of this script is to *demonstrate* a wrapper to run other commands.
GKSUDO=/usr/bin/gksudo
Sudo=/usr/bin/Sudo
gui_Sudo () { # Run command with a GUI-capable Sudo-wrapper
$GKSUDO -- $Sudo "$@"
}
plain_Sudo () { # Run command with the plain Sudo wrapper
$Sudo "$@"
}
has_gui () { # Checks for whether GUI is available via the $DISPLAY environment
if [ "$DISPLAY" != "" ]; then return 0; else return 1; fi
}
has_args () { # Checks for valid amount of arguments
if [ "$1" != "" ]; then return 0; else return 1; fi
}
print_usage () { # Prints usage
echo "Usage: $0 <command> [args]"
}
if has_args $@; then
if has_gui; then gui_Sudo $@; else plain_Sudo $@; fi
else
print_usage; exit 1
fi