Итак, я создал скрипт, который находится в / usr / local / bin, под названием Linux-Permissions. В скрипте есть несколько команд sudo cp. Мне нужен пользователь, чтобы иметь возможность запускать команду от имени sudo, что я смог сделать, добавив это в файл sudoers: username ALL = (root) /usr/local/bin/Linux-Permissions. Однако после того, как он вводит свой пароль для запуска этой команды, он снова запрашивает его пароль для запуска sudo cp внутри сценария. Поскольку у него нет разрешения на запуск cp как sudo, это не удается. Команды sudo внутри скрипта находятся в меню выбора, если это вообще имеет значение.
Итак, вы успешно определили проблему; добавление такой записи в sudoers
только дает возможность запускать / usr / local / bin / Linux-Permissions
с помощью sudo, поэтому все остальные команды sudo завершатся ошибкой поскольку, несмотря на то, что сценарий запускается с привилегиями root, sudo по-прежнему видит, что он выполняется обычным пользователем.
Вероятно, есть несколько разных способов решения этой проблемы, но я бы изменил сценарий так, чтобы он использовал команду sudo
только в том случае, если он работает как пользователь без полномочий root. Вот очень простой пример такого сценария:
#!/usr/bin/env bash
if [ "$USER" != "root" ]; then
SUDO_CMD="sudo "
fi
$SUDO_CMD ls
В этом примере команда ls
будет запущена с sudo
, если сценарий запускается от имени обычного пользователя, но он не будет использовать sudo
, если для переменной среды $ USER
задано значение root
, что будет иметь место, если вы запустите сценарий с sudo
.