2 votes

La recherche de groupe Winbind est terriblement lente

J'utilise winbind sur un système RHEL 6. Tout fonctionne bien, sauf les recherches de groupes. sudo ) sont douloureusement lents. J'ai fait un strace qui montre que winbind recherche chaque groupe et chaque utilisateur dans chaque groupe pour l'utilisateur actuel. Certains de ces groupes ont plus de 20000 utilisateurs, donc un simple sudo peut prendre 60 secondes.

Je ne m'intéresse vraiment qu'à l'accélération de la commande sudo. La solution idéale serait de faire en sorte que :

  1. les groupes dont le nombre d'utilisateurs est supérieur à X ne seront pas recherchés, ou bien
  2. sudo contourne complètement la recherche de groupes.

Voici mon "smb.conf" actuel pour 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

1voto

Chris Stankevitz Points 341

J'ai eu ce même problème après avoir mis à jour sudo et j'ai découvert grâce à Red Hat que sudo a changé son algorithme de résolution d'appartenance aux groupes lors du passage de sudo-1.7.4p5-13.el6_3.x86_64 à sudo-1.8.6p3-7.el6.x86_64. Dans sudo-1.7.4, l'appartenance à un groupe était résolue pour tous les groupes listés dans /etc/sudoers et si le nom d'utilisateur était trouvé dans la liste, les privilèges sudo lui étaient accordés. Dans sudo-1.8.6, cela a été changé pour être l'inverse - sudo récupère une liste de groupes dont l'utilisateur est membre, puis vérifie si l'un de ces groupes est listé dans sudoers.

Cela entraîne l'utilisation de getgrgid() pour chaque groupe dont l'utilisateur est membre, donc si certains groupes sont importants, cela sera assez lent. Vous pouvez soit rétrograder sudo, soit mettre les grands groupes en tant que groupes vides dans votre fichier /etc/group local afin que AD ne soit pas contacté pour eux (en supposant que les grands groupes ne sont pas référencés par le système Linux pour un quelconque contrôle d'accès).

1voto

Mojo Points 1136

L'ancienne méthode (i.e. 1.7.x) peut être inversée par les plugins de groupe :

Defaults group_plugin="system_group.so"

Alternativement, il suffit de forcer pour utiliser /etc/group uniquement (pas de recherche de winbind, etc.) :

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

0voto

Dejan Points 971

Désactiver les groupes imbriqués winbind nested groups = false

-2voto

hunter3740 Points 41

Ou ajoutez simplement "winbind expand groups = 0" à votre fichier /etc/samba/smb.cnf (puis passez au compte root local et "/etc/init.d/winbind stop ; /etc/init.d/samba restart ; /etc/init.d/winbind start")

le premier sudo après un redémarrage peut prendre un moment (mais ce ne sera pas de la mélasse comme vous l'expérimentez), et pour sûr, le suivant sera comme prévu (rapide) ; pour tous les autres, vous pouvez juste utiliser un compte administrateur local pour les commandes sudo (puisque vous êtes obligé de créer un compte local, oui ?).

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X