sudoers
В руководстве также есть целый раздел о том, как правильно вести политику в /etc/sudoers
конфигурационный файл (или, конечно, входящие в комплект файлы политик) может предложить ограниченное защита от побегов снаряда с ОГРАНИЧИТЬ
и NOEXEC
параметры.
Это может быть более общим, чем создание скрипта-обертки для конкретной утилиты.
ограничивать
Избегайте предоставления пользователям доступа к командам, которые позволяют пользователю выполнять произвольные команды. У многих редакторов есть ограниченный режим, в котором экраны оболочки отключены, хотя sudoedit — лучшее решение для запуска редакторов через sudo. Из-за большого количества программ, которые предлагают экранирование оболочки, ограничение пользователей набором программ, которые этого не делают, часто оказывается неработоспособным.
и
noexec
Многие системы, поддерживающие разделяемые библиотеки, имеют возможность переопределять функции библиотеки по умолчанию, указывая переменную среды (обычно LD_PRELOAD) на альтернативную разделяемую библиотеку. В таких системах sudo noexec
функциональность может использоваться для предотвращения выполнения программой, запускаемой sudo, любых других программ. Запись, ... ...
Включить noexec
для команды используйте NOEXEC
тег, как описано выше в разделе «Спецификация пользователя». Вот еще раз этот пример:
Аарон Шанти = NOEXEC: /usr/bin/more, /usr/bin/vi
Это позволяет пользователю aaron запускать /USR/бен/больше
и /USR/бен/ви
с включенным noexec. Это предотвратит выполнение этими двумя командами других команд (например, оболочки).
Итак, в вашем примере:
Джон ALL=NOEXEC:NOPASSWD: /usr/bin/apt,/usr/bin/apt-get
должно быть достаточно, чтобы позволить пользователю Джон
бежать подходящий
и способный получить
с повышенными привилегиями, без запроса пароля и без возможности использовать escape-выход из оболочки или другие приемы, выходящие за пределы его полномочий.
Обратите внимание, что это также может привести к непредвиденным результатам. Например
после установки новой службы apt не сможет запустить связанную службу.