| Guida avanzata di scripting Bash: Un'approfondita esplorazione dell'arte dello scripting di shell | ||
|---|---|---|
| Indietro | Avanti | |
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 |