
Por favor explícame cuál es la diferencia entre:sudo su "nombre de usuario"vs.su "nombre de usuario"
¿Quién tiene mayores privilegios? Si inicio sesión en root consudo su "nombre de usuario", ¿soy root para un solo comando? ¿Entonces puede ser que el principio del guión funcione bien, pero el resto no? Entonces en este casosu "nombre de usuario"¿Se sugiere porque tiene mayores privilegios? Por favor explícame la diferencia entre los 2 comandos, gracias.
Respuesta1
Aquí están las diferencias:
su <someuser>
inicia un shell para el usuariosomeuser
. A menos que sea root, se le pedirá la contraseña desomeuser
.su
(sin nombre de usuario) inicie un shell para el usuarioroot
(después de solicitar la contraseña de root).sudo
solicita su contraseña y (suponiendo que tenga derechos sudo) ejecuta un comando con privilegios de root (sudo reboot
solicita su contraseña y reinicia la computadora).sudo su <somesuer>
se ejecutasu
con privilegios de root. Entonces no solicitasomeuser
la contraseña. Sin embargo, pedirásucontraseña para verificar sus derechos de sudo. Después de eso iniciará un shell.para el usuario algún usuario.
En términos de privilegios, no hay diferencia para el shell que se abre con sudo su <someuser>
o con su <someuser>
. Esteno esun problema de seguridad, ya que el proceso de shell no puede escalar a los privilegios del proceso principal.
TúpoderVea la diferencia si observa el árbol de procesos. sudo su <someuser>
muestra (asumiendo bash):
+───bash───su───bash
Mientras su <someuser>
muestra:
+───bash───sudo───su───bash
Probablemente su siguiente pregunta sea cómo pasar una contraseña en un script desatendido, que no requiere la entrada del usuario. Creo que hay dos opciones:
- Ejecute el script desde cron (o cualquier variante del mismo) y ejecútelo como root
- Ejecute el script desde su propia cuenta y use la opción -S de sudo así:
echo <yourpassword> | sudo -S su -l <someuser>
o incluso mejor:echo <yourpassword> | sudo -S su -l <someuser> -c '<somecommand>'
. Asegúrese de que solo usted pueda leer el script, ya que su contraseña se encuentra en él. De manera más indirecta, puedes almacenar tu contraseña en un archivo y enviarla a sudo. Entonces su secuencia de comandos podrá ser legible, pero su archivo de contraseña no.