Поиск группы Winbind мучительно медленный

Поиск группы Winbind мучительно медленный

Я запускаю winbind на системе RHEL 6. Все работает отлично, за исключением поиска групп, поэтому многие команды (включая sudo) работают мучительно медленно. Я сделал , straceкоторый показывает, что winbind ищет каждую группу и каждого пользователя в каждой группе для текущего пользователя. Некоторые из этих групп имеют 20000+ пользователей, поэтому простая команда sudoможет занять 60 секунд.

Я действительно заботюсь только об ускорении команды sudo. Идеальными решениями были бы либо:

  1. группы с количеством пользователей более X не будут просматриваться, или
  2. sudo полностью обходит групповой поиск.

Вот мой текущий "smb.conf" дляwinbind:

workgroup = EXAMPLE
password server = AD1.EXAMPLE.ORG
realm = EXAMPLE.ORG
security = ads
idmap uid = 10000-19999
idmap gid = 10000-19999
idmap config EXAMPLE:backend = rid
idmap config EXAMPLE:range = 10000000-19999999
winbind enum users = no
winbind enum groups = no
winbind separator = +
template homedir = /home/%U
template shell = /bin/bash
winbind use default domain = yes
winbind offline logon = false

решение1

У меня была та же проблема после обновления sudo, и я узнал от Red Hat, что sudo изменил свой алгоритм разрешения членства в группах при переходе с sudo-1.7.4p5-13.el6_3.x86_64 на sudo-1.8.6p3-7.el6.x86_64. В sudo-1.7.4 членство в группах разрешалось для всех групп, перечисленных в /etc/sudoers, и если имя пользователя находилось в списке, ему предоставлялись привилегии sudo. В sudo-1.8.6 это было изменено на противоположное - sudo извлекал список групп, членом которых является пользователь, затем проверял, перечислены ли какие-либо из этих групп в sudoers.

Это приводит к getgrgid() для каждой группы, членом которой является пользователь, поэтому если некоторые группы большие, это будет довольно медленно. Вы можете либо понизить sudo, либо поместить большие группы как пустые группы в ваш локальный файл /etc/group, чтобы AD не связывался для них (предполагая, что большие группы не используются системой Linux для какого-либо контроля доступа).

решение2

Старый метод (т.е. 1.7.x) можно вернуть с помощью групповых плагинов:

Defaults group_plugin="system_group.so"

В качестве альтернативы просто принудительно используйте /etc/groupтолько (без поиска winbind и т.п.):

Defaults group_plugin="group_file.so /etc/group"

решение3

отключить вложенные группы winbind nested groups = false

решение4

или просто добавьте «winbind expand groups = 0» в файл /etc/samba/smb.cnf (затем переключитесь на локальную учетную запись root и «/etc/init.d/winbind stop; /etc/init.d/samba restart; /etc/init.d/winbind start»)

Первое sudo после перезагрузки может занять некоторое время (но не будет такой мукой, как у вас), и наверняка последующие будут такими, как и ожидалось (быстрыми); для всех остальных вы можете просто использовать учетную запись локального администратора для команд sudo (поскольку вам придется создать одну локальную учетную запись, не так ли?)

Связанный контент