Cygwin отсутствует sudo

Cygwin отсутствует sudo

Я пытаюсь запустить скрипт Linux на своей машине Windows с помощью Cygwin.

Я уже прочитал и попробовал решения изВ Cygwin нет команды 'sudo', но безуспешно.

У меня есть скрипт, который использует sudo в обычной среде Linux. Но когда я запускаю скрипт на Cygwin, он выдает следующее сообщение об ошибке:

project_common.sh: line 604: sudo: command not found

Я знаю, что в Cygwin нет sudo, и в упомянутом ранее вопросе говорилось, что нужно использовать:

>#!/usr/bin/bash
>"$@"

Я пробовал выполнить эту команду перед запуском скрипта. а также встроить команду в скрипт. Ни то, ни другое не помогло. Так что не уверен, что я упускаю.

решение1

Удалите все sudoсимволы «» в файле и запустите скрипт от имени администратора.

При этом идея Linux rootи идея Windows об Администраторе не совсем совпадают. У вас все еще могут быть проблемы с разрешениями, которые нужно исправить вручную или путем дальнейшей модификации скрипта, особенно в Windows Vista/7.

Кстати, в упомянутом вопросе вы хотели, чтобы вы поставили

>#!/usr/bin/bash
>"$@"

в файле с именем sudo, дайте ему права на исполнение с помощью chmod, а затем поместите его в какой-нибудь каталог в вашем $PATH, например /sbin. Полученный файл не будет ничего делать, кроме как выполнять параметры, которые вы ему зададите в качестве команды. Идея была в том, чтобы создать «поддельный» sudo, который ничего не делает. Вы также можете просто удалить ' sudoиз файла.

решение2

Попробуй это:

#!/usr/bin/env bash

cygstart --action=runas "$@"

Он работает аналогично sudo, недостаток в том, что вам нужно вручную подтвердить диалог UAC. Этот скрипт является частью моеготочка репо.

решение3

Есть и другие ответы наПереполнение стекаиСуперпользователькоторый показывает, как выполнить команду с повышенными привилегиями из командной строки Cygwin. Я использую псевдоним:

alias sudo="cygstart --action=runas"

Работает как талисман для внешних программ (но не встроенных в оболочку):

sudo chown User:Group <file>

Связанный контент