¿Es más seguro hacer:
$ sudo dnf update
[ingrese la contraseña del usuario]
o
$ su - [enter root password] # dnf update
Siempre supuse que son exactamente lo mismo, porque sudo utiliza setuid-root, por lo que el proceso que se ejecuta como primer argumento de sudo se ejecuta con el ID efectivo de sudo, que es root.
Supongo que mi pregunta es:¿Sudo eventualmente deja caer su ID efectiva a la del usuario normal? Entonces, en ese caso, el número 1 anterior sería una apuesta más segura, porque si el programa que se ejecuta sudo está comprometido por un atacante, entonces existe la posibilidad de que el atacante no se esté ejecutando como root, porque el privilegio ya se ha eliminado.
Respuesta1
Este primer comando (probablemente) requerirá su contraseña correcta, se ejecutará dnf update
como root y luego saldrá:
$ sudo dnf update [enter user password]
Este segundo comando requerirá la contraseña de root y luego iniciará un shell de root. En ese shell ejecutas dnf update
:
$ su - [enter root password] # dnf update
Realmente no estás comparando cosas iguales. Podrías comparar estos dos comandos, los cuales inician un shell raíz en el que ejecutas (al menos) el comandodnf update
sudo -s
dnf update
su -
dnf update
O puede comparar estos dos comandos, los cuales inician una instancia con privilegios de root dnf update
y luego salen nuevamente al shell de la persona que llama.
sudo dnf update
su root -c 'dnf update'
Lo que creo que en realidad estás preguntando es si es mejor invocar un solo comando con privilegios de root o iniciar un shell con privilegios de root para ejecutar uno o más comandos.
- Si la
dnf
funcionalidad o sus descargas se ven comprometidas de alguna manera, entonces no importa cómo se ejecute, el problema es que se ejecute en absoluto. - Si está hablando de comprometer su sistema, entonces todo se reduce a la seguridad de la contraseña del usuario (
sudo
) versus la contraseña del root (su
) - Si está considerando si puede confiar en el usuario, entonces realmente no importa si obtiene un shell raíz en el que ejecuta múltiples comandos o un shell raíz para ejecutar un comando a la vez; el problema es que los comandos se pueden ejecutar como root
Personalmente, combino y combino mi uso según la necesidad. Rara vez lo uso su
, pero sí lo uso sudo {command....}
para sesiones puntuales rápidas o sudo -s
para una sesión corta en la que necesito ejecutar varios comandos (por ejemplo, las herramientas de administración de paquetes de Debian, apt-get update
seguidas de apt-get upgrade
).
Respuesta2
Sí, sudo
pierde privilegios cuando finaliza el proceso secundario. En este caso dnf
. Donde su
se pierden privilegios cuando finaliza el proceso secundario. En este caso un shell interactivo. Por lo tanto, el sudo
ejemplo elimina los privilegios antes.
sudo
También tiene otras ventajas no cubiertas aquí. (por ejemplo, el sudoers
archivo se puede utilizar para dar más control sobre lo que cada usuario puede y no puede hacer).