man visudo
объясняет, что visudo не будет (по умолчанию) использовать EDITOR
переменные VISUAL
окружения.
В нем говорится, что
«Не существует простого способа помешать пользователю получить root-оболочку, если редактор, используемый visudo, допускает выход за пределы оболочки».
Теперь я не понимаю, где находится риск безопасности. Я считаю, что
- только root может использовать visudo для редактирования
/etc/sudoers
- только root может изменять переменные окружения root
- у корня уже есть корневая оболочка
Вероятно, есть случай, когда это не работает, но я не могу его вспомнить.
решение1
Я не думаю, что есть дополнительный риск безопасности от запуска произвольного редактора, visudo
строго говоря. Очевидно, что пользователь, который запускает, visudo
уже имеет разрешения на редактирование /etc/sudoers
, и, следовательно, имеет возможность добавлять правила, которые разрешат выполнение любых других команд в системе. Поэтому независимо от того, какой редактор запущен, пользователь, который может, visudo
уже может выполнить все, что захочет, косвенно, добавив новое правило sudo.
Я думаю, что рекомендация в документации о EDITOR
переменных VISUAL
среды и касается выполнения оболочки root (или произвольной команды) в обход стандартного журнала sudo. По умолчанию sudo регистрирует все успешные и неудачные аутентификации в syslog. Это дает системному администратору аудиторский след о том, какие пользователи выполняют какие команды через sudo. Если пользователь изменяет /etc/sudoers
с помощью visudo
, это можно увидеть с помощью контрольной суммы или просмотра файла. Однако, если пользователь может получить оболочку root через visudo
, он может выполнять произвольные команды без какого-либо аудиторского следа.
Таким образом, риск безопасности такой же, как и при предоставлении разрешения на запуск sudo bash
, а именно, что пользователь с такой привилегией может получить root-оболочку и выполнить произвольный код без каких-либо ограничений или регистрации выполняемых команд.