Я запускаю winbind на системе RHEL 6. Все работает отлично, за исключением поиска групп, поэтому многие команды (включая sudo
) работают мучительно медленно. Я сделал , strace
который показывает, что winbind ищет каждую группу и каждого пользователя в каждой группе для текущего пользователя. Некоторые из этих групп имеют 20000+ пользователей, поэтому простая команда sudo
может занять 60 секунд.
Я действительно заботюсь только об ускорении команды sudo. Идеальными решениями были бы либо:
- группы с количеством пользователей более X не будут просматриваться, или
- 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 (поскольку вам придется создать одну локальную учетную запись, не так ли?)