Intereting Posts
Как получить доступ к физической памяти из пользовательского пространства? file: Волшебная версия скомпилированного не совпадает с волшебной версией совместно используемой библиотеки Как написать сценарий nawk, который выводит все, кроме пустых строк, и отображает общее количество пустых строк? как выполнить команду только по 3-му файлу каждой папки unix chroot jail shell (с или без sudo?) Как определить, является ли сборка основанной на Debian? Почему установлены даты модификации, когда файлы были изменены разработчиками, а не когда они были изменены локально из-за обновления? Ошибка установки SSH в Ubuntu, работающем в VirtualBox Захват timestamped событий мыши X и рендеринг видео с пользовательским указателем мыши? Возникли проблемы при запуске LFTP с использованием cron или apache Как получить записи таблицы psql в сценарии оболочки? Предложить дополнительный файловый дескриптор «stdmeta» Показать содержимое многих файлов Поиск всех разделов с файловыми системами Эквивалент Bash FUNCNAME в тире

Если я выполнил файл сценария Bash, будут ли выполняться все команды внутри скрипта Bash как sudo?

Я хочу написать автоматический сценарий после установки в Bash ( post-install.sh , post-install.sh ). Сценарий будет автоматически добавлять и обновлять репозитории, устанавливать и обновлять пакеты, редактировать файлы конфигурации и т. Д.

Теперь, если я sudo post-install.sh этот скрипт, например, с sudo post-install.sh , мне будет предложено только пароль sudo один раз, или мне нужно будет ввести пароль sudo при каждом вызове команды внутри скрипта, которая нуждается в разрешение sudo ? Другими словами, должны ли команды внутри сценария bash «наследовать» разрешения на выполнение, так сказать?

И если это действительно так , существует ли вероятность того, что разрешения sudo будут тайм-аут (если, например, определенная команда занимает достаточно много времени, чтобы превысить тайм-аут sudo )? Или начальный пароль для пароля sudo длиться до полной продолжительности всего скрипта?

Q # 1: Будет ли я запрашиваться только пароль sudo один раз, или мне нужно будет ввести пароль sudo при каждом вызове команды внутри скрипта, для которой требуется разрешение sudo?

Да, один раз, на время запуска вашего скрипта.

ПРИМЕЧАНИЕ. Когда вы предоставляете учетные данные sudo , аутентификация обычно хороша в течение 5 минут в оболочке, где вы вводили пароль. Кроме того, любые дочерние процессы, которые выполняются из этой оболочки, или любой скрипт, который работает в оболочке (ваш случай), также будут выполняться на повышенном уровне.

Q # 2: существует ли вероятность того, что разрешения sudo будут отключены (если, например, определенная команда занимает достаточно много времени, чтобы превысить тайм-аут sudo)? Или начальный пароль для пароля sudo будет длиться до полной продолжительности всего скрипта?

Нет, они не будут таймаутом внутри скрипта. Только если вы интерактивно вводили их в оболочку, где были предоставлены учетные данные. Каждый раз, когда sudo выполняется в этой оболочке, таймаут сбрасывается. Но в вашем случае учетные данные останутся до тех пор, пока скрипт выполняет и запускает команды изнутри.

выдержка из страницы sudo man

Это ограничение зависит от политики; таймаут запроса пароля по умолчанию для политики безопасности sudoers составляет 5 минут.

bash и все его дочерние процессы будут выполняться с разрешениями суперпользователя. Поэтому вам не нужно повторно вводить пароль для команд в вашем сценарии bash.

sudo аут sudo применяется только к (последующему) раздельному вызову sudo . Это не повлияет на ваш уже запущенный процесс bash или любого из его потомков.

Эти ответы, вероятно, правильны. Однако это не общепринятый способ (насколько мне известно) создавать сценарии bash, требующие sudo разрешений. Как правило, в верхней части скрипта вы предполагаете, что он не был запущен с разрешениями sudo и вместо этого вызывается sudo -v (который подскажет пользователю пароль) для «настройки» сеанса sudo . Вы можете либо echo какой-то пояснительный текст перед подсказкой, либо переопределить собственное приглашение sudo с помощью ключа -p , чтобы пользователь знал, что вам нужен sudo доступ для некоторых команд.

Затем в вашем скрипте должно быть хорошо называть sudo командами, которые требуют его (и только те команды, которые его требуют), без дальнейших запросов пароля. Если вы считаете, что определенная группа команд, которые работают вместе в вашем скрипте (независимо от их собственного использования sudo ), будет выходить за пределы таймаута sudo, вы можете называть sudo -v посередине, чтобы выдать своего рода «keep-alive» ' sudo ' session '.

Если во время сценария истечет срок действия сеанса sudo , пользователю просто будет предложено ввести пароль в следующий раз, когда вы выпустите команду sudo в скрипте.