¿Cuál es la diferencia entre sudo -i y sudo su -

Respuestas:

30

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.

Joel K
fuente
Gracias, te voté como la respuesta correcta. Una pregunta más, ¿entonces no tiene sudo su -sentido?
Howard
Si quisiera golpear las referencias de SUDO, podría ser útil. Así que no tiene sentido en ese caso.
Joel K
También hay grandes diferencias en el manejo de argumentos, el manejo de variables de entorno y en la seguridad al convertirse en un usuario no root. Vea lo que agregué aquí: serverfault.com/q/601140/102814
Craig Ringer
1

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

Termiux
fuente
sutambién puede ejecutar un solo comando:su -c 'command ...'
Eliah Kagan
La pregunta era sobre la diferencia entre sudo -iy sudo su -, no entre sudoy su.
Alessio Gaeta