Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

329
Vistas
La diferencia entre "sudo sh -c" y "su -c"

Quiero iniciar un programa como root al arrancar y agregaré una de las siguientes líneas a rc.local:

 sudo /path/my_prog sudo sh -c "/path/my_prog" su -c "/path/my_prog"

¿Cuál es la diferencia entre estas tres líneas y cuál es la correcta?

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

No necesitas ninguno de ellos; rc.local se ejecuta con privilegios de root . La respuesta correcta es simplemente ejecutar su comando.

 /path/my_prog

su tiene sentido si eres root y quieres cambiar a una cuenta diferente.

sudo tiene sentido si está ejecutando en una cuenta sin privilegios y se le han otorgado los derechos para cambiar a otra cuenta (a menudo, pero no siempre, root ), generalmente con el requisito de poder proporcionar su contraseña de forma interactiva (aunque esto puede ser desactivado si es realmente necesario; obviamente, debe comprender lo que está haciendo antes de meterse con cosas relacionadas con la seguridad).

sh -c "command" es solo una forma ineficiente de ejecutar el command . Ejecutar un shell tiene sentido cuando realmente necesita funciones de shell como expansión de comodines, redirección, etc., o componentes de shell como cd .

Idealmente, es posible que desee asegurarse de que my_prog se ejecute en una cuenta de sistema dedicada sin privilegios; entonces la sintaxis seria

 su otheraccount -c /path/my_prog

donde obviamente necesita crear otheraccount y asegurarse de que tenga los privilegios necesarios para realizar esta tarea en particular.

su opcionalmente le permite agregar un guión solitario antes del nombre de la cuenta para que ejecute una sesión de inicio de sesión; pero para una cuenta de servicio, esto probablemente no tenga sentido.

over 4 years ago · Santiago Trujillo Denunciar

0

  • sudo /path/my_prog ejecutará /path/my_prog con privilegios de sudo.

  • sudo sh -c "/path/my_prog" ejecutará /path/my_prog (especificado por el indicador -c ) con sh usando los privilegios de sudo.

  • su -c "/path/my_prog" ejecutará /path/my_prog (especificado por el indicador -c ) con su shell actual usando los privilegios de sudo.

El uso correcto depende de su caso de uso, por lo que en realidad depende de usted. En mi humilde opinión, sudo foo y su -c foo son básicamente lo mismo.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda