Specjalista od PAM poszukiwany...
Marcin Król
hawk w limanowa.net
Wto, 6 Cze 2006, 18:10:44 CEST
Hello.
Przy okazji debugowania bledu w obsludze grup w nss_ldap natknalem sie
na taki sam blad w PAM. Dla przykladu posluze sie modulem pam_limits.
Otoz jest sobie system z ustawionymi limitami w
/etc/security/limits.conf. Limity owe sa na grupy grupax, grupay, grupaz
gdzie grupax ma 7 czlonkow, grypay kilkudziesieciu, a grupaz kilka
tysiecy. PAM przelatujac odwolanie do pam_limits dochodzi w kodzie do
wywloania _pammodutil_getgrnam() znajdujacego sie w
modules/pammodutil/modutil_getgrnam.c:41. Wszystko dziala pieknie dla
wszystkich trzech grup jezeli nie jest zdefiniowane HAVE_GETGRNAM_R.
Jezeli natomiast uzywane jest getgrnam_r to wszystko pieknie zadziala
dla grupax i grupay, a nie zadziala dla grupaz. Powod: wywolanie
getgrnam_r (modutil_getgrnam.c:68) zwroci blad i ustawi errno na
"Numerical result out of range" - z testow mi wyszlo ze bufor podany w
parametrach wywolania byl za maly na pomieszczenie informacji o grupie
grupaz. Konczy sie to tym, ze dla duzych grup limity systemowe narzucane
przez PAM przy logowaniu itp mozna sobie w 4 litery wsadzic.
Jezeli jakis magik mialby pomysl jak to poprawic to bylbym niezmiernie
wdzieczny, bo przekompilowywanie PAM z wymuszeniem uzycia getgrnam()
jest bezsensowne.
M.
Więcej informacji o liście dyskusyjnej pld-devel-pl