Как установить путь для команд sudo

37

Если я выпущу

sudo my-command

как Linux смотрит на это my-command?

Это my-commandв моем ПУТИ. Я могу вызвать это без каких-либо проблем. Однако, когда я вызову это с sudo, я получу command not found. Интересно, никогда не испытывай этого раньше. Как побороть?

EDIT: Это «Возможный дубликат» «s выбран ответ неверен, ну, по крайней мере , не до такой степени. Этот ответ от Тердона является правильным.

XPT
источник

Ответы:

48

Обычно это задается secure_pathпараметром в /etc/sudoers. От man sudoers:

 secure_path   Path used for every command run from sudo.  If you don't
               trust the people running sudo to have a sane PATH environ‐
               ment variable you may want to use this.  Another use is if
               you want to have the “root path” be separate from the “user
               path”.  Users in the group specified by the exempt_group
               option are not affected by secure_path.  This option is not
               set by default.

Чтобы запустить команды, которые не по умолчанию $PATH, вы можете либо

  1. Используйте полный путь sudo ~/bin/my-command:; или

  2. Добавьте каталог, содержащий команду secure_path. Запустите sudo visudoи измените строку безопасного пути:

    Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/youruser/bin/"
    

    Сохраните файл и при следующем запуске sudoкаталог ~/binбудет в нем $PATH.

terdon
источник
2
Или просто закомментируйте всю строку, если это не производственная машина, и нам все равно. Тогда он будет использовать PATH пользователей. Он говорит, что он не установлен по умолчанию, но это не всегда может быть правдой ...
Нагев
2

Вот что я использовал для обхода проблемы:

sudo cp $(which my-command) /usr/bin
...

Команда whichвыполняется в подоболочке без полномочий root, поэтому она может найти my-command, а затем sudo копирует исполняемый файл в путь, по которому rootпользователь может получить доступ. Не очень хорошо для безопасности, но для меня было нормальным запускать образ докера, который уничтожался сразу после запуска команды.

Бренден Смит
источник