Как временно отключить тайм-аут аут аут аутентификационных данных sudo?

Использование расширения параметра :

for f in words/*/*_pct.txt; do
  n=${f#*/}   # Remove everything till the first slash
  n=${n%%_*}  # Remove everything from the first underscore to the end
  awk -v var="$n" -f script.awk "$f" >> words/results.txt
done

Обратите внимание, что вам нужно указать -v var = "$ n" , и если ] $ n содержат экранированные последовательности, они будут раскрыты.

3
19.04.2019, 21:41
2 ответа

Я думаю, что лучше всего использовать (фоновый )занятый -цикл ожидания, который обновляет отметку времени sudo, которую вы затем уничтожаете, когда вам больше не нужны sudoпривилегии. Вот пример сценария; он выполняет sleep 6вместо ваших двух -часов command2и запускает видимые /bin/echoкоманды вместо command1иcommand2:

#!/bin/sh
sudo /bin/echo command 1
while :; do sudo -v; sleep 1; done &
infiloop=$!
sleep 6
sudo /bin/echo command 3
kill "$infiloop"

Для вашего сценария я бы рекомендовал более свободный цикл:

#!/bin/sh
sudo command1
while :; do sudo -v; sleep 59; done &
infiloop=$!
command2
sudo command3
kill "$infiloop"

Отрегулируйте sleep 59по вкусу, в зависимости от существующей настройки timestamp_timeoutв sudoers; Я выбрал 59 только для того, чтобы продемонстрировать выбор, который вы могли бы сделать, если бы время ожидания метки времени составляло 60 секунд.

4
27.01.2020, 21:17

Ну можно было бы совместить Как сделать чтобы sudo забывал пароль автоматически после одной команды? и Какова цель явного использования `sudo -S `?

  1. Считайте пароль от пользователя, сохраните его в переменной окружения
  2. Запустите sudoс флагом -k, чтобы игнорировать учетные данные и всегда запрашивать пароль
  3. Передайте пароль через stdinв sudoс флагом-S
  4. Удалить переменную окружения с паролем

В определенных ситуациях это может быть полезно, но я не уверен, что хранить пароль пользователя в переменной окружения — это хорошая идея.

0
27.01.2020, 21:17

Теги

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