Jaka jest różnica między „sudo [polecenie]” a „sudo sh [polecenie]?

13

Próbuję zainstalować VMware Workstation w moim Ubuntu 12.04.2 LTS. Jeśli wykonam następujące polecenie:

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

kończy się natychmiast i instalacja nigdy się nie rozpoczyna.

Jeśli wykonam to polecenie:

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

Instalator można uruchomić pomyślnie.

Dlaczego to robi różnicę?

Landy
źródło
powiązane: askubuntu.com/questions/141928/…
Takkat 11.04.2013
powiązane również: askubuntu.com/questions/70534/…
Nanne

Odpowiedzi:

13

Jeśli plik nie jest oznaczony jako wykonywalny, musisz wywołać interpreter powłoki poleceń, aby go wykonać.

Przykłady:

  • sudo sh foootworzy foo z shużyciem uprawnień sudo .

  • sudo bash foootworzy foo z bashużyciem uprawnień sudo .

  • sh foootworzy foo z shwykorzystaniem uprawnień użytkownika.

  • bash foootworzy foo z bashwykorzystaniem uprawnień użytkownika.

Jeśli zaznaczysz plik jako wykonywalny, wystarczy go wywołać, ./fooa ponieważ jest on oznaczony jako taki, zostanie odczytany za pomocą zdefiniowanego interpretera powłoki poleceń i wykonany bez potrzeby jego definiowania.

ls -Fwyświetli listę plików i oznaczy pliki wykonywalne za pomocą * .

Aby włączyć bit wykonania dla pliku (i uczynić go wykonalnym jako takim), użyj polecenia chmod +x foo.

W twoim przypadku, aby plik, którego używasz, byłby wykonywalny, użyłbyś wtedy polecenia

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

i wtedy będziesz mógł uruchomić go z dowolnym z nich

sudo sh ./VMware-Workstation-9.0.1-894247.x86_64.bundlelub po prostu pisząc sudo ./VMware-Workstation-9.0.1-894247.x86_64.bundle.

Bruno Pereira
źródło
12

Sh to powłoka do uruchamiania poleceń, więc wykonywanie sh za pomocą sudo daje powłokę root. Oznacza to, że wszystkie polecenia w tej powłoce są wykonywane jako root. Domyślam się, że skrypt wykonuje coś innego, co wymaga rootowania, jednak gdy używasz tylko sudo, a nie sudo sh, coś innego zostanie wykonane jako zwykły użytkownik, jednak w sh wszystko zostanie wykonane jako root.

w4etwetewtwet
źródło
Dziękuję za odpowiedź. Moja reputacja jest mniejsza niż 15, więc nie mogę głosować za twoją odpowiedzią. Ale ,,, dziękuję!
Landy
1
Przyjęta odpowiedź zawiera więcej szczegółów, ale myślę, że jest to naprawdę kluczowa kwestia, o której ludzie powinni wiedzieć.
Christopher Hunter