¿Cuál es la diferencia entre 'sudo [comando]' y 'sudo sh [comando]?

13

Estoy tratando de instalar VMware Workstation en mi Ubuntu 12.04.2 LTS. Si ejecuto el siguiente comando:

sudo ./VMware-Workstation-9.0.1-894247.x86_64.bundle

termina de una vez y la instalación nunca comienza.

Si ejecuto este comando:

sudo sh ./VMware-Workstation-9.0.1-894247.x86_64.bundle

El instalador se puede iniciar con éxito.

Por qué esto hace una diferencia?

Landy
fuente
relacionado también: askubuntu.com/questions/70534/…
Nanne

Respuestas:

13

Si el archivo no está marcado como ejecutable, debe llamar a un intérprete de comandos para ejecutarlo.

Ejemplos:

  • sudo sh fooabrirá foo con el shuso de privilegios de sudo .

  • sudo bash fooabrirá foo con el bashuso de privilegios de sudo .

  • sh foose abrirá foo con shel uso de los privilegios del usuario.

  • bash foose abrirá foo con bashel uso de los privilegios del usuario.

Si marca un archivo como ejecutable, solo necesita llamarlo ./fooy, dado que está marcado como tal, se leerá con el intérprete de shell de comandos definido y se ejecutará sin la necesidad de definir uno.

ls -Fenumerará archivos y marcará ejecutables con * .

Para habilitar el bit de ejecución en un archivo (y hacerlo ejecutable como tal) use el comando chmod +x foo.

En su caso, para hacer que el archivo que está utilizando sea ejecutable, entonces usaría el comando

chmod +x VMware-Workstation-9.0.1-894247.x86_64.bundle

y luego podrás ejecutarlo con

sudo sh ./VMware-Workstation-9.0.1-894247.x86_64.bundleo simplemente escribiendo sudo ./VMware-Workstation-9.0.1-894247.x86_64.bundle.

Bruno Pereira
fuente
12

Sh es un shell para ejecutar comandos, por lo que ejecutar sh con sudo le proporciona un shell raíz. Esto significa que todos los comandos en ese shell se ejecutan como root. Supongo que el script ejecuta otra cosa que necesita root, sin embargo, cuando solo usa sudo no sudo sh, esa otra cosa se ejecuta como un usuario normal, sin embargo, con sh todo se ejecutará como root.

w4etwetewtwet
fuente
Gracias por tu respuesta. Mi reputación es inferior a 15, así que no puedo votar por su respuesta. Pero, gracias!
Landy
1
La respuesta aceptada tiene más detalles, pero creo que este es realmente un punto clave que las personas deben tener en cuenta.
Christopher Hunter