Commandes désactivées en shell restreint
. Le fait d'exécuter un script ou une partie de script en mode restreint désactive certaines commandes qui, sans cela, seraient disponibles. Cette mesure de sécurité est prévue pour limiter les droits de l'utilisateur du script et donc minimiser les risques liés à l'exécution du script.
Les commandes et actions ci-dessous sont désactivées :
L'usage de cd pour changer de répertoire de travail.
Le changement de valeur des variables d'environnement suivantes : $PATH, $SHELL, $BASH_ENV, $ENV.
La lecture ou le remplacement d'options d'environnement de shell $SHELLOPTS.
La redirection de sortie.
L'appel à des commandes contenant un ou plusieurs /.
L'appel à exec pour substituer un processus différent de celui du shell.
Diverses autres commandes qui pourraient permettre de détourner le script de son objectif initial.
La sortie du mode restreint à l'intérieur d'un script.
Exemple 22.1. Exécuter un script en mode restreint
#!/bin/bash # Commencer le script avec "#!/bin/bash -r" lance le script entier en mode #+ restreint. echo echo "Changement de répertoire." cd /usr/local echo "Maintenant dans `pwd`" echo "Je retourne à la maison." cd echo "Maintenant dans `pwd`" echo # Jusqu'ici, tout est en mode normal, non restreint. set -r # set --restricted a le même effet. echo "==> Maintenant en mode restreint. <==" echo echo echo "Tentative de changement de répertoire en mode restreint." cd .. echo "Toujours dans `pwd`" echo echo echo "\$SHELL = $SHELL" echo "Tentative de changement de shell en mode restreint." SHELL="/bin/ash" echo echo "\$SHELL= $SHELL" echo echo echo "Tentative de redirection de sortie en mode restreint." ls -l /usr/bin > bin.fichiers ls -l bin.fichiers # Essayez de lister le fichier que l'on a tenté de créer. echo exit 0