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 |