Quelle est la différence entre « sudo [commande] » et « sudo sh [commande]?

13

Je suis en train d'installer VMware Workstation dans mon Ubuntu 12.04.2 LTS. Si j'exécutez la commande suivante:

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

il se termine à la fois et l'installation ne démarre jamais.

Si j'exécute cette commande:

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

Le programme d'installation peut être lancé avec succès.

Pourquoi cela fait une différence?

Landy
la source
également lié: askubuntu.com/questions/70534/…
Nanne

Réponses:

13

Si le fichier n'est pas marqué comme exécutable, vous devez appeler un interpréteur de commandes pour l'exécuter.

Exemples:

  • sudo sh fooouvrira foo en shutilisant les privilèges sudo .

  • sudo bash fooouvrira foo en bashutilisant les privilèges sudo .

  • sh fooouvrira foo en shutilisant les privilèges de votre utilisateur.

  • bash fooouvrira foo en bashutilisant les privilèges de votre utilisateur.

Si vous marquez un fichier comme exécutable, il vous suffit de l'appeler avec ./fooet parce qu'il est marqué comme tel, il sera lu avec l'interpréteur de commandes défini et exécuté sans qu'il soit nécessaire d'en définir un.

ls -Flistera les fichiers et marquera les exécutables avec * .

Pour activer le bit d'exécution sur un fichier (et le rendre exécutable en tant que tel), utilisez la commande chmod +x foo.

Dans votre cas, pour rendre le fichier que vous utilisez exécutable, vous utiliserez alors la commande

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

et vous pourrez ensuite l'exécuter avec

sudo sh ./VMware-Workstation-9.0.1-894247.x86_64.bundleou simplement en tapant sudo ./VMware-Workstation-9.0.1-894247.x86_64.bundle.

Bruno Pereira
la source
12

Sh est un shell pour exécuter des commandes, donc exécuter sh avec sudo vous donne un shell racine. Cela signifie que toutes les commandes de ce shell sont exécutées en tant que root. Je suppose que le script exécute quelque chose d'autre qui a besoin de root, cependant quand vous n'utilisez que sudo pas sudo sh, que quelque chose d'autre est exécuté en tant qu'utilisateur normal, mais avec sh tout sera exécuté en tant que root.

w4etwetewtwet
la source
Merci pour votre réponse. Ma réputation est inférieure à 15, je ne peux donc pas voter pour votre réponse. Mais ,,, Merci à VOUS!
Landy
1
La réponse acceptée contient plus de détails, mais je pense que c'est vraiment un point clé dont les gens devraient être conscients.
Christopher Hunter