Capitolo 21. Shell con funzionalità limitate.

Azioni disabilitate in una shell ristretta

L'esecuzione di uno script, o di una parte di uno script, in modalità ristretta impedisce l'esecuzione di alcuni comandi normalmente disponibili. Rappresenta una misura di sicurezza per limitare i privilegi dell'utilizzatore dello script e per minimizzare possibili danni causati dalla sua esecuzione.

Usare cd per modificare la directory di lavoro.

Cambiare i valori delle variabili d'ambiente $PATH, $SHELL, $BASH_ENV o $ENV.

Leggere o modificare $SHELLOPTS, le opzioni delle variabili d'ambiente di shell.

Redirigere l'output.

Invocare comandi contenenti una o più /.

Invocare exec per sostituire la shell con un processo differente.

Diversi altri comandi che consentirebbero o un uso maldestro o tentativi per sovvertire lo script a finalità per le quali non era stato progettato.

Uscire dalla modalità ristretta dall'interno dello script.

Esempio 21-1. Eseguire uno script in modalità ristretta

#!/bin/bash
#  Far iniziare lo script con "#!/bin/bash -r"
#+ significa far eseguire l'intero script in modalità ristretta.

echo

echo "Cambio di directory."
cd /usr/local
echo "Ora ti trovi in `pwd`"
echo "Ritorno alla directory home."
cd
echo "Ora ti trovi in `pwd`"
echo

# Quello fatto fin qui è normale, modalità non ristretta.

set -r
# set --restricted    ha lo stesso significato.
echo "==> Ora lo script è in modalità ristretta. <=="

echo
echo

echo "Tentativo di cambiamento di directory in modalità ristretta."
cd ..
echo "Ti trovi ancora in `pwd`"

echo
echo

echo "\$SHELL = $SHELL"
echo "Tentativo di cambiare la shell in modalità ristretta."
SHELL="/bin/ash"
echo
echo "\$SHELL= $SHELL"

echo
echo

echo "Tentativo di redirigere l'output in modalità ristretta."
ls -l /usr/bin > bin.file
ls -l bin.file    #  Cerca di elencare il contenuto del file che si 
                  #+ è tentato di creare.

echo

exit 0