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?
- 810 megtekintés
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.
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
Ezek szerint az altalad hasznalt leiras koszono viszonyban sem volt a POSIX.1-2001 -ben definialt group strukturaval. Nem meglepo, ha ebbol gond volt.
- A hozzászóláshoz be kell jelentkezni
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
- A hozzászóláshoz be kell jelentkezni