Пользовательский скрипт, запущенный с помощью sudo — команда не найдена

Пользовательский скрипт, запущенный с помощью sudo — команда не найдена

Проблема:

Запуск скрипта при возврате sudo

sudo: mount-remove-hiberfile: command not found

Информация:

  • Папка скриптов: '/scripts' (все мои пользовательские скрипты хранятся здесь)

  • Мой пользователь: 'cybex'

cybex@cybex-W55xEU:~$ echo $PATH //и 'sudo echo $PATH' возвращают тот же путь

/home/cybex/.rbenv/plugins/ruby-build/bin:/home/cybex/.rbenv/shims:/home/cybex/.rbenv/bin:/home/cybex/.rbenv/plugins/ruby-build/bin:/home/cybex/.rbenv/shims:/home/cybex/.rbenv/bin:/home/cybex/bin:/scripts:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/scripts:/snap/bin

root@cybex-W55xEU:/home/cybex# echo $PATH

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/scripts

Скрипт «mount-remove-hiberfile» не может быть запущен от имени обычного пользователя, поэтому мне нужно будет запустить sudo mount-remove-hiberfile.

Почему sudo не обнаруживает этот скрипт?

Примечание: Я нашел несколько вопросов по этой теме, но ни один из них не ответил на мой вопрос.

ОБНОВЛЯТЬ

ls -l /scripts/
total 20
-rwxr-xr-x 1 root root   95 Apr 26 22:45 apt-manage
-rwxr-xr-x 1 root root   40 Apr 26 22:45 apt-update
-rwxr-xr-x 1 root root  769 Apr 28 20:47 create-desktop-file
-rwxr-xr-x 1 root root  370 May 16 22:45 extractgst.sh
-rwxr-xr-x 1 root root 1085 May 16 21:25 mount-remove-hiberfile

ОБНОВЛЕНИЕ (вставьте вставку, содержащую команду, ошибку и каталог)

cybex@cybex-W55xEU:~$ pwd
/home/cybex
cybex@cybex-W55xEU:~$ ls -l /scripts/
total 52
-rwxr-xr-x 1 root root   95 Apr 26 22:45 apt-manage
-rwxr-xr-x 1 root root 2283 May 21 16:59 backup
-rwxr-xr-x 1 root root  109 May 21 16:59 check-port
-rwxr-xr-x 1 root root 2185 May 21 16:59 connected
-rwxr-xr-x 1 root root  769 Apr 28 20:47 create-desktop-file
-rwxr-xr-x 1 root root  164 May 21 16:59 download
-rwxr-xr-x 1 root root  370 May 16 22:45 extractgst.sh
-rwxr-xr-x 1 root root 5142 May 21 16:59 firewall
-rwxr-xr-x 1 root root 3881 May 21 16:59 firewall.save
-rwxr-xr-x 1 root root 1085 May 16 21:25 mount-remove-hiberfile
-rwxr-xr-x 1 root root   80 May 21 16:59 portquiz
-rwxr-xr-x 1 root root   84 May 21 16:59 space-used
drwxr-xr-x 1 root root    0 May 21 17:00 tmp
cybex@cybex-W55xEU:~$ sudo mount-remove-hiberfile 
sudo: mount-remove-hiberfile: command not found

решение1

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

постоянные и глобальные изменения

Вам /etc/sudoersнеобходимо изменить две настройки:

sudo visudo

В файле sudoers по умолчанию есть параметр, Default env_resetкоторый очищает настройки среды из оболочки, вызывающей sudo, даже если sudo вызывается с опцией -E (сохранить среду).

В файле найдите параметр с именем env_keep. Он определяет, какие переменные окружения разрешено передавать в корневую среду, созданную с помощью sudo. Обычно в файле sudoers по умолчанию есть ряд операторов env_keep="xxx" и env_keep+="xxx". По умолчанию PATH не входит в число переменных окружения, через которые разрешено передавать.

Добавьте PATH к одной из этих записей или закомментируйте строку env_reset. Если у вас нет записей env_keep, найдите Defaults env_resetи добавьте новую env_keep = "PATH"запись после нее.

Во-вторых, даже если вы разрешите переменной PATH передаваться в среду sudo, путь в sudoers ограничен настройкой. Defaults secure_path='...'Вы можете либо закомментировать эту настройку, либо добавить путь, по которому находится ваш скрипт, в запись.

После этого sudo сохранит переменную PATH и выполнит ваш скрипт.

обходной путь командной строки

Чтобы избежать изменения файла sudoers, вы можете вызвать sudo с помощью следующего синтаксиса:

sudo env "PATH=$PATH" <script name>

решение2

sudo по умолчанию не использует ваш путь и не запускает bashrc root или эквивалент. Смотритеhttps://askubuntu.com/q/128413для полного описания.

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