В чем разница между sudo [command] и sudo sh [command]?

Я пытаюсь установить VMware Workstation в моем Ubuntu 12.04.2 LTS. {{1 }} Если я выполню следующую команду:

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

, она сразу завершится, а установка никогда не начнется.

Если я выполню эту команду:

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

Программа установки может быть запущена успешно.

Почему это имеет значение?

11
задан 11 April 2013 в 15:25

2 ответа

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

0
ответ дан 11 April 2013 в 15:25

Если файл не помечен как исполняемый, для его запуска необходимо вызвать интерпретатор командной оболочки.

Примеры:

  • sudo sh foo откроет foo с sh, используя sudo привилегии.

  • sudo bash foo откроет foo с bash с использованием sudo привилегий.

  • sh foo откроет foo с sh, используя привилегии вашего пользователя.

  • bash foo откроет foo с bash, используя привилегии вашего пользователя.

Если вы пометили файл как исполняемый, вам просто нужно вызвать его с помощью ./foo и, поскольку он помечен как таковой, он будет считан с помощью определенного интерпретатора командной оболочки и выполнен без необходимости его определения. [ 1128]

ls -F перечислит файлы и пометит исполняемые файлы как * .

Чтобы включить бит выполнения для файла (и сделать его исполняемым как таковой), используйте команду chmod +x foo.

В вашем случае, чтобы сделать файл, который вы используете, исполняемым, вы должны использовать команду

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

, а затем вы сможете запустить его с помощью

[ 1134] sudo sh ./VMware-Workstation-9.0.1-894247.x86_64.bundle или просто набрав sudo ./VMware-Workstation-9.0.1-894247.x86_64.bundle.

0
ответ дан 11 April 2013 в 15:25

Другие вопросы по тегам:

Похожие вопросы: