У меня есть большое количество хостов Linux, которые подключены с помощью sssd
в домен Windows Active Directory (AD) для поиска пользователей / групп. В основном это работает нормально, за исключением одной проблемы; sudo
.
Из того, что мне удалось найти в ходе тестирования, каждый раз, когда вы запускаете sudo
команда sudo
пытается разрешить все имена всех групп, в которых находится пользователь. Поскольку sssd
только по умолчанию кэширует gid и должен выполнять медленный поиск имени (при условии, что что-то не вызвало sssd
для кэширования недавно названных групп на хосте) это может вызвать sudo
чтобы сделать паузу на 45 секунд для учетных записей во многих группах, прежде чем она дойдет до запроса пароля для продолжения sudo
команда.
Из моего тестирования это разрешение имени группы происходит независимо от того, есть ли sudo
правила, применяемые к пользователям, использующим их группы. Я тестировал изменение значений group_source в sudo.conf
но это, похоже, не имело большого эффекта.
Удаление всех наших пользователей из большинства групп, в которых они находятся, на самом деле не вариант (решение по безопасности инфраструктуры, которое я не могу контролировать), поэтому мне остается попытаться найти способ остановить sudo
долгая пауза, пока ищутся все идентификаторы групп.
Единственное решение, которое я придумал до сих пор, - запускать cronjob каждые 15 минут, чтобы сделать что-то вроде getent group
делать sssd
постоянно храните имена групп в кэше в памяти, но это кажется хакерским решением. Так что я надеюсь, что у кого-нибудь в сети может быть лучшее решение для ускорения sudo
в этой ситуации?
Я бы предложил либо установить ignore_group_members
возможность true
, или связать кеш с tmpfs, или дождаться апстрима 1.14.
Причина, по которой разрешение группы является медленным, заключается в том, что сохранение группы при обновлении кеша после истечения срока действия кеша всегда записывает полный объект группы в кэш на диске, даже если ничего не изменилось. В 1.14 мы меняем логику кеширования, чтобы обновлять кеш только в том случае, если что-то действительно изменилось, см. One Fourteen повышения производительности.
Настройка ignore_group_members
приведет к тому, что группы будут казаться пустыми, что уменьшит их размер и ускорит время сохранения кеша. Обратите внимание, что это не повлияет на sudo
функциональность, потому что sudo
использует initgroups()
чтобы узнать, в каких группах состоит пользователь, а не getent group
и группы инициализации.
Я также написал сообщение в блоге на sssd
настройка производительности некоторое время назад, хотя она ориентирована на сервер IPA, многие моменты относятся к sssd-ad
конфигурация тоже.