Чому запуск команди як sudo return команда не знайдена?


12

Зразок команди:

drush cc all

працює, але це:

sudo drush cc all

дає мені:

sudo: drush: command not found

Чому? Як це виправити?


У мене також було таке питання інколи, з такими основними командами, як cd. Використання dzdo cdповернення "команда не знайдена". Звичайно, пізніше я зрозумів, що cdвведення в каталог, на який я не маю дозволів, не дуже допоможе, тому мені або потрібна коренева оболонка, або потрібно dzdo ls, dzdo mvі т. Д. Вміст поза цим dir.
Wildcard

2
Проблема sudo cdполягає в тому, що cdце вбудована команда, а не програма. Якщо ви хочете зайти в каталог, до якого у вас немає доступу, і (наприклад) перейменувати файл там, ви можете зробити це (наприклад) sudo mv dir/oldfile dir/newfile або sudo sh -c "cd dir; mv oldfile newfile" .
G-Man каже: "Відновіть Моніку"

Відповіді:


13

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

Див. Наприклад

sudo намагається бути безпечним під час виконання зовнішніх команд.

Є два різних способи поводження зі змінними середовища. За замовчуванням включена опція env_reset sudoers . Це призводить до того команди повинні бути виконані з мінімальною середовищем , що містить TERM, PATH, HOME, SHELL, LOGNAME, USERі USERNAMEна додаток до змінних з процесу викликає це допускається env_checkі env_keep sudoers варіантів. Існує фактично білий список змінних середовища.

Якщо ви не можете налаштувати sudoзбереження свого $PATH, звичайним способом вирішення є визначення повного імені програми. Це може не спрацювати зі сценаріями, які викликають інші виконувані файли в каталозі (без доступу).


0

Вам слід вказати повний шлях. Це також більш безпечно; якщо ви не вказуєте шлях, можливо, зловмисник може створити іншу програму, яка працюватиме з кореневими дозволами.

Також потрібно поставити рядок, /etc/sudoersщоб це дозволило. man sudoersдля синтаксису тут занадто багато ставити.

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