Respuestas:
Pueden proporcionar funcionalmente cerca de lo mismo, pero parece que 'sudo -i' es más liviano y mantiene algunas referencias útiles en su entorno.
Puede ver los procesos adicionales mirando 'ps auxf' (f le da una vista del bosque)
sudo -i produce este árbol de procesos
jkrauska 4480 0.0 0.0 76828 1656 ? S 23:38 0:00 | \_ sshd: jkrauska@pts/0
jkrauska 4482 0.0 0.0 21008 3816 pts/0 Ss 23:38 0:00 | \_ -bash
root 4675 0.6 0.0 19512 2260 pts/0 S+ 23:42 0:00 | \_ -bash
sudo su - produce este árbol de procesos
jkrauska 4480 0.0 0.0 76828 1656 ? S 23:38 0:00 | \_ sshd: jkrauska@pts/0
jkrauska 4482 0.0 0.0 21008 3816 pts/0 Ss 23:38 0:00 | \_ -bash
root 4687 0.5 0.0 43256 1488 pts/0 S 23:42 0:00 | \_ su -
root 4688 0.5 0.0 19508 2252 pts/0 S+ 23:42 0:00 | \_ -su
Tenga en cuenta que están comenzando desde el mismo proceso bash pid, 4482, pero que su - parece generar otro paso).
Su primer 'sudo' ya está elevando su nivel de acceso a root. Ejecutar su sin especificar un nombre de usuario dentro de sudo cambia el usuario actual a root dos veces.
Otra forma de investigar esto es ejecutando ambos comandos con strace -f.
strace -f -o sudoi sudo -i
vs
strace -f -o sudosu sudo su -
Si difieres esas dos capas, verás que se ejecutan más exeve para sudo su -.
Una cosa más.
sudo -i mantiene las variables de entorno adicionales establecidas por SUDO.
SUDO_USER=jkrauska
SUDO_UID=1000
SUDO_COMMAND=/bin/bash
SUDO_GID=1000
sudo su - clobbers esas variables.
Respuesta de tiro: No, no son lo mismo.
Respuesta larga: sudo y su: son programas diferentes que realizan la misma tarea, lo que lo eleva a los privilegios de root.
Do solía ser la forma de facto de convertirse en root en los sistemas Linux. Sin embargo, siempre hubo la necesidad de separar los privilegios y dejar algo de información de auditoría. También cuando haces su - todo lo que haces se hace como root y es peligroso tener tanto poder. Aquí es donde sudo vino al rescate.
sudo tiene algunas características que su no tiene. El elemento clave en sudo es su capacidad de ejecutar el comando "uno" como root y luego soltar los privilegios al usuario normal. Ejemplo: eliminar un archivo propiedad de root.
sudo rm /root/someFile
Este comando borrará el archivo porque sudo lo elevará a root cada vez que use el comando sudo antes que otro comando. El siguiente comando que ejecutó se ejecutará como un usuario normal (a menos que agregue el comando sudo al principio). Esto le permite realizar tareas administrativas y luego eliminar privilegios inmediatamente, lo que le ayuda a evitar condiciones peligrosas.
sudo también proporciona otros beneficios, como restringir el conjunto de programas que puede ejecutar un usuario, registrar comandos que se ejecutan bajo sudo y otras cosas. Para más información sudo en pocas palabras
Cuando haces su - o sudo -i haces lo mismo. Eso se está convirtiendo en root, pero tenga en cuenta que su y sudo son completamente diferentes y le proporcionan diferentes herramientas como administrador del sistema. Personalmente, NUNCA ejecuto su, y mi política de pam lo prohíbe y no permite que nadie lo ejecute. En mis sistemas, siempre tiene que usar sudo debido a los beneficios adicionales.
Más información: Uso y habilitación de sudo
su
también puede ejecutar un solo comando:su -c 'command ...'
sudo -i
y sudo su -
, no entre sudo
y su
.
sudo su -
sentido?