sudo su "nombre de usuario" frente a su "nombre de usuario"

sudo su "nombre de usuario" frente a su "nombre de usuario"

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 usuario someuser. A menos que sea root, se le pedirá la contraseña de someuser.
  • su(sin nombre de usuario) inicie un shell para el usuario root(después de solicitar la contraseña de root).
  • sudosolicita su contraseña y (suponiendo que tenga derechos sudo) ejecuta un comando con privilegios de root ( sudo rebootsolicita su contraseña y reinicia la computadora).
  • sudo su <somesuer>se ejecuta sucon privilegios de root. Entonces no solicita someuserla 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.

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.

información relacionada