21. Shells restreints

Commandes désactivées en shell restreint

 Exécuter un script ou une partie de script en mode restreint désactive certaines commandes qui, sinon, seraient utilisables. C'est une mesure de sécurité ayant pour objectif de limiter les droits de l'utilisateur du script et de minimiser les risques liés à l'exécution de ce script.

 L'usage de cd pour changer de répertoire courant.

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.

Divers 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 21.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