podivny problem s prikazem groups (nekdy vypise pouze 32 skupin)
Pavel Kankovsky
peak na argo.troja.mff.cuni.cz
Neděle Říjen 29 11:30:29 CET 2006
On Tue, 24 Oct 2006, Pavel Lisý wrote:
> dnes jsem zjistil, že příkaz groups vykazuje podivné anomálie (systém
> RHEL-3 Update 8, ověřování uživatelů proti LDAP)
>
> root# groups username
> vrátí seznam skupin daného uživatele v pořádku
> username$ groups username
> vrátí seznam skupin daného uživatele v pořádku
Tyto dva příkazy udělají to, že k zadanému uživateli zjistí z databáze
skupiny, do kterých je zařazen jako člen.
> username$ groups
> spouštěný daným uživatelem bez parametrů - vrátí seznam skupin o několik
> posledních skupin menší ??? Nechápu proč? Kvůli tomu se danému uživateli
> zřejmě nedaří připojit přes ssh k danému serveru (v logu se objeví:
> sshd: getgrouplist: groups list too small)
Tento příkaz provede volání getgroups(2) a přeloží výsledné gidy na jména.
Čili rozdíl je zřejmý: výše uvedené zkoumají datové soubory (nebo ve vašem
případě LDAP), tento zkoumá aktuální nastavení v jádře.
> id vykazuje stejné chování:
To bude tím, že groups je vlastně zkratka za id -Gn.
> Navíc to celé nefunguje pro jednoho uživatele. Má těch skupin hodně.
Ha!
> Teď jsem to spočítal, bez parametru (username) to vypisuje prvních 32
> skupin, jinak správně všech 40.
Tak to je jasné. Kolik máte "getconf NGROUPS_MAX". Není to náhodou 32?
Prostě má jádro limit 32 na počet supplementary groups. A tudíž se po
přihlášení podaří nastavit jen některé.
Je možné, že bez nscd se tenhle problém nějak ignoruje, zatímco s nscd se
stane fatálním (což je tedy divné, ale nelze to vyloučit), a proto
přítomnost nscd ovlivňuje, jak se to chová.
> Je to normální chování nebo to mám nahlásit jako chybu k opravení?
Je to vlastnost. Už se to tady v minulosti řešilo. Můžete si zkusit
vyrobit jádro, co bude mít vyšší NGROUPS_MAX. Jestli jste velký jaderný
hacker, tak můžete třeba zkusit i dynamickou alokaci. Ale otázka je,
jestli stejně nebudete muset přizpůsobit Glibc a spoustu programů
v userlandu.
Nebo můžete zapřemýšlet, jak redukovat počet skupin, do kterého
potřebujete toho jednoho uživatele zařadit.
--Pavel Kankovsky aka Peak [ Boycott Microsoft--http://www.vcnet.com/bms ]
"Resistance is futile. Open your source code and prepare for assimilation."
Další informace o konferenci Linux