Як встановити шлях для команд sudo


37

Якщо я видаю

sudo my-command

як Linux це шукає my-command?

Це my-commandє в моїй ПАРТІ. Я можу викликати це без жодних проблем. Однак, коли я покликаю це sudo, я отримаю command not found. Цікаво, ніколи цього не відчувайте раніше. Як подолати?

EDIT: Це «Можливий дублікат» «s обраний відповідь невірна, ну, принаймні , не до такої міри. Ця відповідь від тердона є правильною.

Відповіді:


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.


2
Або просто прокоментуйте всю лінійку, якщо це не машина виробництва, і нам все одно. Тоді він використовуватиме PATH користувачів. Там сказано, що це не встановлено за замовчуванням, але це не завжди може бути правдою ...
Нагев

2

Це те, що я використовував для вирішення:

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

whichКоманда виконується в субоболочке , який не є коренем, тому він може знайти my-command, то, SUDO копіює виконуваний на шлях , що rootдоступ користувачів може. Не чудово для безпеки, але для мене було нормально працювати зображення докера, яке знищувалося відразу після запуску команди.

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