Яка різниця між «sudo [команда]» та «sudo sh [команда]?


13

Я намагаюся встановити VMware Workstation в моєму Ubuntu 12.04.2 LTS. Якщо я виконую таку команду:

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

він закінчується відразу, і інсталяція ніколи не починається.

Якщо я виконую цю команду:

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

Інсталятор можна запустити успішно.

Чому це має значення?



пов'язані також: askubuntu.com/questions/70534/…
Нанна

Відповіді:


13

Якщо файл не позначений як виконуваний, для його виконання потрібно викликати інтерпретатора оболонки команди.

Приклади:

  • sudo sh fooвідкриє foo з shвикористанням привілеїв sudo .

  • sudo bash fooвідкриє foo з bashвикористанням привілеїв sudo .

  • sh fooвідкриє foo з shвикористанням привілеїв вашого користувача.

  • bash fooвідкриє foo з bashвикористанням привілеїв вашого користувача.

Якщо ви позначаєте файл як виконуваний, вам просто потрібно викликати його ./fooі тому, що він позначений як такий, він буде прочитаний із визначеним інтерпретатором оболонки команди та виконаний без необхідності його визначення.

ls -Fвідображатиме файли та позначає виконувані файли * .

Щоб увімкнути біт виконання файлу (і зробити його виконуваним як такий), використовуйте команду chmod +x foo.

У вашому випадку, щоб зробити файл, який ви використовуєте, виконується, ви використовуєте команду

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

і тоді ви зможете запустити його з будь-яким

sudo sh ./VMware-Workstation-9.0.1-894247.x86_64.bundleабо просто набравши текст sudo ./VMware-Workstation-9.0.1-894247.x86_64.bundle.


12

Sh - оболонка для запуску команд, тому виконання sh з sudo дає вам кореневу оболонку. Це означає, що всі команди в цій оболонці виконуються як root. Я здогадуюсь, що скрипт виконує щось інше, що потребує root, проте, коли ви використовуєте лише sudo не sudo sh, щось інше виконується як звичайний користувач, проте з sh все буде виконано як root.


Дякую за вашу відповідь. Моя репутація менше 15, тому я не можу проголосувати за вашу відповідь. Але ,,, Дякую ВАМ!
Ленді

1
У прийнятій відповіді є детальніше, але я думаю, що це дійсно ключовий момент, про який люди повинні знати.
Крістофер Хантер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.