У меня есть сценарий, который выполняет множество разных задач, большинство из которых не требует каких-либо особых привилегий. Тем не менее, один конкретный раздел, который я содержал в функции, нуждается в привилегиях суперпользователя.
Я не хочу требовать, чтобы весь сценарий выполнялся от имени пользователя root, и я хочу иметь возможность вызывать эту функцию с правами root изнутри сценария. Запрос пароля в случае необходимости не является проблемой, так как в любом случае он в основном интерактивный. Однако, когда я пытаюсь использовать sudo functionx
, я получаю:
sudo: functionx: command not found
Как я и ожидал, export
ничего не изменилось. Я хотел бы иметь возможность выполнять функцию непосредственно в сценарии, а не разбивать ее и выполнять как отдельный сценарий по ряду причин.
Есть ли способ, которым я могу сделать свою функцию "видимой" для sudo, не распаковывая ее, не находя соответствующий каталог, а затем выполняя его как отдельный скрипт?
Функция сама по себе имеет длину страницы и содержит несколько строк, некоторые в двойных кавычках, а некоторые в одинарных кавычках. Это также зависит от функции меню, определенной в другом месте основного скрипта.
Я бы только ожидал, что кто-то с sudo ЛЮБОЙ сможет запустить функцию, так как одна из вещей, которую он делает - это смена паролей.
declare
их тоже.