Каким образом ограничить выполнение однократной команды пользователем с привилегией sudo?
Ответ от нейросети
sobes.tech AI
Ограничить выполнение однократной команды пользователем с привилегией sudo можно несколькими способами:
-
Настройка sudoers: В файле
/etc/sudoersможно явно указать, какие команды разрешены пользователю, и использовать опциюNOEXECдля предотвращения запуска дочерних процессов. -
Использование скриптов-оберток: Вместо прямого вызова команды через sudo, создать скрипт, который проверяет, была ли команда уже выполнена (например, через создание флага в файловой системе).
-
Лимитирование через PAM или внешние инструменты: Можно настроить ограничения на уровне PAM или использовать системы контроля доступа.
Пример настройки в sudoers для разрешения только одной команды:
username ALL=(ALL) NOPASSWD: /usr/bin/команда
Чтобы ограничить однократное выполнение, можно внутри скрипта команды проверять наличие файла-флага и отказывать в повторном запуске.
Пример простого скрипта-обертки:
#!/bin/bash
FLAGFILE="/var/run/command_executed.flag"
if [ -f "$FLAGFILE" ]; then
echo "Команда уже была выполнена ранее."
exit 1
else
touch "$FLAGFILE"
/usr/bin/команда "$@"
fi
Таким образом, пользователь сможет выполнить команду только один раз, пока не будет удалён файл-флаг.