libnss-pgsql group segfault

Fórumok

Felhasználói adatokat kezelnék a libnss-pgsql2 csomaggal, de ha a felhasználónak létező csoportot adok meg, akkor például az "ls" parancs esetén "segmentation fault" hibát kapok. Ha a felhasználó gid értékével nincs létrehozva csoport rekord az adatbázisban, akkor szépen működik minden, csak ugye, a csoportnak nem lesz neve.
Ez azért így mégsem egészséges.
Valaki használta már a libnss-pgsql2 csomagot a userkezeléshez?
Van valamilyen trükk, vagy amire figyelni kellene?

Hozzászólások

Ennyiből még nehéz kideríteni, pontosan hol is a gond.

Javaslom próbáld apró lépésekre szétbontani a problémát, és oroszlánfogással behatárolni a probléma helyét.

Egyik amit tudok javasolni: ha olyan a db, amiből az nss modul kérdez, hogy ideiglenesen bekapcsolható rajta a query log, akkor azt tedd meg. Egyik oldalról az is segíthet.

Másik oldalról, meg ne rögtön az ls-el ess neki a debugolásnak.
Próbáld lépésekben pl. a getent paranccsal kérdezgetni a db-t. (lásd még oroszlánfogás)
Esetleg futtasd strace-szel a getent-et.

Köszönöm, ez segített.
A getent group testgroup a "column number 3 is out of range 0..2" hibaüzenetet adta. A leírás szerint - ami alapján dolgoztam - a getgrgid és a getgrnam SELECT-jeinek 3 mezőt kell visszaadnia. A valóság azonban az, hogy egy 4. mezőt is, a userek listáját. Gondolom, a usernevek listáját, a group fájlhoz hasonlóan.

Mivel nekem ez postgresql alatt nem volt triviális, leírom, milyen sql lekérdezéssel működik megfelelően, hátha valaki még belefut ebbe:


getgrnam = SELECT groupname, passwd, gid, (SELECT string_agg(p.username, ',') FROM passwd_table p INNER JOIN usergroups u using(gid) WHERE p.gid = g.gid) FROM group_table g WHERE groupname = $1 LIMIT 1
getgrgid = SELECT groupname, passwd, gid, (SELECT string_agg(p.username, ',') FROM passwd_table p INNER JOIN usergroups u using(gid) WHERE p.gid = g.gid) FROM group_table g WHERE gid = $1 LIMIT 1

Azt nem tudom, hol van a hivatalos forrása annak, hogy melyik libnss műveletnek pontosan milyen értékeket kell visszaadnia.

Itt igaziból nem is az nss doksi az érdekes, hanem az nss-pgsql esetén nincs szinkronban a kód és a doksi.
Futottam bele hasonlóba én is. De évekkel ezelőtt, és a megoldásra már én sem emlékeztem, csak hogy milyen eszközökkel szoktam kideríteni, mi és hol van elkuffantva benne.

Szóval, ha "hivatalos forrás" a forrás.
Meg, nem mellesleg az egy jó (?) példakód arra is, hogy hogyan implementálj esetleg egy saját nss lib-et.

pasztor@omni-lx:~$ apt search nss |grep libnss | grep dev

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

libnss3-dev/xenial-updates,xenial-security 2:3.28.4-0ubuntu0.16.04.3 amd64