Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

327
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!