Разрешить пользователю запускать сценарий от имени sudo с командами sudo в сценарии
====================================================================================

 Итак, я создал скрипт, который находится в / 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` .