Pesquisa de grupo Winbind dolorosamente lenta

Pesquisa de grupo Winbind dolorosamente lenta

Estou executando o winbind em um sistema RHEL 6. Tudo funciona bem, exceto pesquisas de grupo, muitos comandos (incluindo sudo) são dolorosamente lentos. Eu fiz um straceque mostra que o winbind procura cada grupo e cada usuário dentro de cada grupo para o usuário atual. Alguns desses grupos têm mais de 20.000 usuários, então um simples sudopode levar 60 segundos para ser concluído.

Eu realmente só me importo em acelerar o comando sudo. As soluções ideais tornariam isso possível:

  1. grupos com mais de X número de usuários não serão pesquisados, ou
  2. sudo ignora completamente as pesquisas de grupo.

Aqui está meu "smb.conf" atual parawinbind:

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

Responder1

Eu tive esse mesmo problema depois de atualizar o sudo e descobri na Red Hat que o sudo mudou seu algoritmo de resolução de associação de grupo ao passar de sudo-1.7.4p5-13.el6_3.x86_64 para sudo-1.8.6p3-7.el6.x86_64. No sudo-1.7.4, a associação ao grupo foi resolvida para todos os grupos listados em /etc/sudoers e se o nome de usuário fosse encontrado na lista, eram concedidos privilégios sudo. No sudo-1.8.6, isso foi alterado para o contrário - o sudo buscava uma lista de grupos dos quais o usuário é membro e verificava se algum desses grupos estava listado nos sudoers.

Isso resulta em getgrgid() para cada grupo do qual o usuário é membro, portanto, se alguns grupos forem grandes, isso será bastante lento. Você pode fazer downgrade do sudo ou colocar os grupos grandes como grupos vazios em seu arquivo /etc/group local para que o AD não seja contatado por eles (assumindo que os grupos grandes não sejam referenciados pelo sistema Linux para qualquer controle de acesso).

Responder2

O método antigo (ou seja, 1.7.x) pode ser revertido por plugins de grupo:

Defaults group_plugin="system_group.so"

Alternativamente, apenas force a usar /etc/groupapenas (sem pesquisas winbind, etc.):

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

Responder3

desativar grupos aninhados winbind nested groups = false

Responder4

ou apenas adicione "winbind expand groups = 0" ao seu arquivo /etc/samba/smb.cnf (depois mude para a conta root local e "/etc/init.d/winbind stop; /etc/init.d/samba restart; /etc/init.d/winbind start")

o primeiro sudo após a reinicialização pode demorar um pouco (mas não será melaço como você está enfrentando) e, com certeza, o subsequente será o esperado (rápido); para qualquer outra pessoa, você pode usar apenas uma conta de administrador local para comandos sudo (já que é forçado a criar uma conta local, sim?)

informação relacionada