Как Заблокировать Определённые Команды в Sudoers: Полное Руководство
Когда речь заходит о безопасности систем Linux, управление правами пользователей — ключевая задача. Одним из важных элементов этого управления является файл sudoers, который определяет, какие команды могут выполнять пользователи с повышенными привилегиями. В этой статье мы обсудим, как правильно настроить разрешения для команды find
, чтобы запретить её использование с определёнными опциями, такими как -exec
и -delete
.
Проблема с Командой find
Ситуация, с которой вы можете столкнуться, заключается в том, что команда find
может быть использована пользователем с правами sudo
, даже когда вы предполагаете, что она должна быть запрещена. Например, вы можете попытаться заблокировать использование следующих команд:
find ... -exec rm
find ... -delete
Однако, в результате неудачной конфигурации вы можете заметить, что команда работает, как показано в следующем примере:
$ sudo su - myUser
$ sudo find var/www/html/ ! -type d -exec ls -l {} +
Анализ Конфигурации sudoers
Чтобы понять, почему команда разрешается, необходимо проанализировать настройки в файле /etc/sudoers.d/myUser
. Например, следующие строки:
myUser ALL=!/usr/bin/find * -exec *
myUser ALL=!/usr/bin/find * -delete *
myUser ALL=/usr/bin/find *
удаляют ограничения для myUser
, когда используется команда find
без дополнительных условий.
Изменение Порядка Записей
Так как в файле sudoers применяются записи по порядку, последняя соответствующая команда имеет приоритет. Это означает, что:
myUser ALL=/usr/bin/find *
разрешает использование find
в любых контекстах, предшествующих записям, запрещающим использование опций -exec
и -delete
. Чтобы это исправить, следует изменить порядок записей:
myUser ALL=/usr/bin/find *
myUser ALL=!/usr/bin/find * -exec *
myUser ALL=!/usr/bin/find * -delete *
Дополнительные Ограничения
Если вы хотите внедрить еще более строгие ограничения, возможно, вам потребуется запретить и другие опции, такие как -ok
и другие производные от -exec
. Для этого добавьте соответствующие строки:
myUser ALL=!/usr/bin/find -exec *
myUser ALL=!/usr/bin/find -delete *
Также стоит учитывать, что различные реализации find
могут поддерживать дополнительные аргументы, такие как -execdir
и -okdir
, которые также нужно будет заблокировать, если они представляют для вас опасность.
Заключение
Управление правами доступа в Linux с помощью файла sudoers — это мощный инструмент, который требует тщательного подхода к конфигурации. С помощью правильного порядка записей и тщательного выбора запрещённых опций, вы можете существенно повысить безопасность вашей системы. Регулярно проверяйте и обновляйте конфигурацию sudoers в зависимости от изменяющейся угрозы и потребностей вашей среды.
Следуя данным рекомендациям, вы сможете эффективно управлять доступом пользователей и защитить свою систему от нежелательных изменений.