Intereting Posts
Как использовать неявный FTP через TLS Каковы эти символические ссылки в / run / udev / watch? эффект сигнала перезагрузки в состоянии serviced службы cpulimit в скрипте bash, который запускает другие команды nc -l в фоновом закрытии немедленно закрывается (nc -l 1234 &) dd сработает после нескольких часов передачи Как выбрать, какую графическую карту использовать? Сервисный скрипт вызывает другой скрипт с переменными Как установить FreeBSD вместе с Linux, с файловой системой ZFS для рута? Автоматически переименовывать файлы, когда они помещаются в определенный каталог Могу ли я глобально отключить кинетическую прокрутку на сенсорной панели? dpkg: новый сценарий предварительной установки возвратил статус выхода 1 цикл через выход одной команды и использовать в другой команде Автозаполнение Bash: файлы первого списка затем циклически проходят через них Необходимо вставить одинарные кавычки в текстовый файл для использования в качестве SQL-запроса с помощью sed

Почему запуск команды как команды sudo return не найден?

Пример команды:

drush cc all 

работает, но это:

 sudo drush cc all 

дает мне:

 sudo: drush: command not found 

Зачем? Как это исправить?

Когда вы используете sudo , вы получаете предварительно сконфигурированный $PATH , который (предположительно) является чем-то вроде пути пользователя root по умолчанию. Ваша программа не входит в список каталогов, идентифицированных с помощью $PATH .

См. Например

  • Как сделать sudo сохранить $ PATH?
  • Почему переменные PATH отличаются при запуске через sudo и su?
  • sudoers (5) (см. различные настройки, относящиеся к PATH )
  • Sudo (8)

sudo пытается быть безопасным при выполнении внешних команд.

Существует два разных способа решения переменных окружения. По умолчанию env_reset опция env_reset sudoers . Это приводит к выполнению команд с минимальной средой, содержащей TERM , PATH , HOME , SHELL , LOGNAME , USER и USERNAME в дополнение к переменным из процесса вызова, разрешенному параметрами env_check и env_keep sudoers . Эффективный белый список для переменных среды.

Если вы не можете настроить sudo для сохранения $PATH , обычным обходным путем является указание полного пути к программе. Это может плохо работать со сценариями, которые вызывают другие исполняемые файлы в каталоге (без доступа).

Вы должны указать полный путь. Это также более безопасно; он не укажет путь, возможно, что злоумышленник может создать другую программу, которая будет запускаться с правами root.

Кроме того, вам нужно поставить строку в /etc/sudoers чтобы разрешить ее. man sudoers для синтаксиса, это слишком много, чтобы положить здесь.