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

Итак, я создал скрипт, который находится в / usr / local / bin, под названием Linux-Permissions. В скрипте есть несколько команд sudo cp. Мне нужен пользователь, чтобы иметь возможность запускать команду от имени sudo, что я смог сделать, добавив это в файл sudoers: username ALL = (root) /usr/local/bin/Linux-Permissions. Однако после того, как он вводит свой пароль для запуска этой команды, он снова запрашивает его пароль для запуска sudo cp внутри сценария. Поскольку у него нет разрешения на запуск cp как sudo, это не удается. Команды sudo внутри скрипта находятся в меню выбора, если это вообще имеет значение.

0
задан 4 June 2021 в 19:44

1 ответ

Итак, вы успешно определили проблему; добавление такой записи в 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 .

0
ответ дан 28 July 2021 в 11:32

Другие вопросы по тегам:

Похожие вопросы: