Если вам действительно нужен «самый быстрый» способ *, я думаю, вы создаете веб-сервер, который будет обрабатывать много одновременных запросов.
Это поднимает еще одну проблему - проблему параллелизма. Как правило, многие процессы чтения и записи в один и тот же важный файл являются рецептом катастрофы.
Создайте небольшой независимый процесс для решения задачи. Он должен иметь минимальный интерфейс, который будет получать запросы от клиентов и обновления для файла /etc/sudoer
. Что-то вроде has_NOPASSWD_access()
и set_NOPASSWD_access()
. Он должен читать файл только тогда, когда он должен быть записан, поэтому вы значительно сократите время ввода-вывода, необходимое для обработки запроса.
Плюсы -
- Быстрый: ввод-вывод не требуется для простого чтения файла, поскольку он сохраняется в буфере с момента первоначального чтения
- Потокобезопасный: только один сервер пишет и читает файл sudoer
- Принцип единого выбора - только этот процесс обрабатывает файл sudoer
- Элегант (надеюсь): -)
Минусы -
- Перечислите их в комментариях, и я добавлю.