[Nsspampgsql-devel] error with " DECLARE nss_pgsql_internal_allusers_curs SCROLL CURSOR FOR FOR READ ONLY"

Coiby Xu coiby.xu at gmail.com
Sat Apr 14 07:11:49 UTC 2012


Hi Stephen,

Thanks for you reply! Another thing is that if running "getent passwd
{shell_user}", it will not search for {shell_user} in database according to
log of pgsql but only in /etc/passwd.

The following are the configs:

*1. nsswitch.conf*
*
*
passwd:     files pgsql #Added by GForge install
#Comment by GForge install#passwd:     files
shadow:     files pgsql #Added by GForge install
#Comment by GForge install#shadow:     files
group:      files pgsql #Added by GForge install
#Comment by GForge install#group:      files
bootparams: nisplus [NOTFOUND=return] files
ethers:     files
netmasks:   files
networks:   files
protocols:  files
rpc:        files
services:   files
netgroup:   nisplus
publickey:  nisplus
automount:  files nisplus
aliases:    files nisplus

*2. nss-pgsql.conf*
#----------------- DB connection
connectionstring  =  user=gforge dbname=gforge

#----------------- NSS queries
getpwnam        = SELECT login AS
username,passwd,gecos,('/var/lib/gforge/chroot/home/users/' || login) AS
homedir,shell,uid,gid FROM nss_passwd WHERE login = $1
getpwuid        = SELECT login AS
username,passwd,gecos,('/var/lib/gforge/chroot/home/users/' || login) AS
homedir,shell,uid,gid FROM nss_passwd WHERE uid = $1
#allusers        = SELECT login AS
username,passwd,gecos,('/var/lib/gforge/chroot/home/users/' || login) AS
homedir,shell,uid,gid FROM nss_passwd
getgroupmembersbygid = SELECT login AS username FROM nss_passwd WHERE gid =
$1
getgrnam = SELECT name AS groupname,'x',gid,ARRAY(SELECT user_name FROM
nss_usergroups WHERE nss_usergroups.gid = nss_groups.gid) AS members FROM
nss_groups WHERE name = $1
getgrgid = SELECT name AS groupname,'x',gid,ARRAY(SELECT user_name FROM
nss_usergroups WHERE nss_usergroups.gid = nss_groups.gid) AS members FROM
nss_groups WHERE gid = $1
#allgroups = SELECT name AS groupname,'x',gid,ARRAY(SELECT user_name FROM
nss_usergroups WHERE nss_usergroups.gid = nss_groups.gid) AS members FROM
nss_groups
groups_dyn = SELECT ug.gid FROM nss_usergroups ug, nss_passwd p WHERE
ug.uid = p.uid AND p.login = $1 AND ug.gid <> $2

*3. nss-pgsql-root.conf*
### NSS Configuration for Gforge

#----------------- DB connection
shadowconnectionstring =  user= dbname=gforge

#----------------- NSS queries
shadowbyname    = SELECT login AS shadow_name, passwd AS shadow_passwd,
14087 AS shadow_lstchg, 0 AS shadow_min, 99999 AS shadow_max, 7 AS
shadow_warn, '' AS shadow_inact, '' AS shadow_expire, '' AS shadow_flag
FROM nss_passwd WHERE login = $1
shadow          = SELECT login AS shadow_name, passwd AS shadow_passwd,
14087 AS shadow_lstchg, 0 AS shadow_min, 99999 AS shadow_max, 7 AS
shadow_warn, '' AS shadow_inact, '' AS shadow_expire, '' AS shadow_flag
FROM nss_passwd


2012/4/14 Stephen Gran <sgran at debian.org>

> This one time, at band camp, Coiby Xu said:
> > Hi all,
> >
> > I'm using libnss_pgsql module but there's problems with it. If I exute
> > "getent passwd", the following messages show
> > in /var/lib/pgsql/data/pg_log/postgresql-Sat.log. And the system is still
> > using /etc/passwd and /etc/group to authenticate ssh uses.
> >
> > ERROR:  syntax error at or near "FOR" at character 61
> > > STATEMENT:  DECLARE nss_pgsql_internal_allusers_curs SCROLL CURSOR FOR
> > >  FOR READ ONLY
> > > ERROR:  current transaction is aborted, commands ignored until end of
> > > transaction block
> > > STATEMENT:  FETCH FROM nss_pgsql_internal_allusers_curs
> >
> >
> > Eveny I modify codes nss-pgsql.conf like:
> >
> > > getpwnam        = SELECT login AS
> > > username,passwd,gecos,('/var/lib/gforge/chroot/home/users/' || login)
> AS
> > > homedir,shell,uid,gid FROM nss_passwd WHERE login = $1
> >
> > to
> >
> > > getpwnam        = SELECT  AS
> > > ,passwd,gecos,('/var/lib/gforge/chroot/home/users/' || login) AS
> > > homedir,shell,uid,gid FROM nss_passwd WHERE login = $1
> >
> > The previous error message  would show. I can't figure out why. Can
> anyone
> > give some advice? Thanks!
>
> The cursor declaration is:
>    asprintf(&stmt, "DECLARE nss_pgsql_internal_%s_curs SCROLL CURSOR FOR "
>                    "%s FOR READ ONLY", what, getcfg(what));
>
> So, you are somehow calling `getent allusers` with no config for that.
> This sounds like a config error to me, but I can't tell without seeing
> your config.
>
> Cheers,
> --
>  -----------------------------------------------------------------
> |   ,''`.                                            Stephen Gran |
> |  : :' :                                        sgran at debian.org |
> |  `. `'                        Debian user, admin, and developer |
> |    `-                                     http://www.debian.org |
>  -----------------------------------------------------------------
>
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.10 (GNU/Linux)
>
> iQIcBAEBCAAGBQJPiSCQAAoJELMRjO+K6o/uZuwP/Ra7/rTHDHYcfojcGbB2pbU0
> vxq/J7BZEraDZYerlo5N/HjAKerq78gemQG/KTz/BIvyeRV3Mk6S6JRrMKAA3+kq
> Qwx1fH5ktLeg227K0AcI1q25wx+8d4nb9wh8lEuzCkGOpa7xOzYclteYSb87bmZ+
> v+r3Aem3K6f9SUWZcWg9ghbLW7ZY+NXA3q+3J8KxUuHvMeHS+Y+4Jr8FtOHRhHLJ
> 0USIezJaP991k0GksfXim8MoSLyQgtsraTSGdcSp1ynjmVB6mEhW2nb7oEX05/MO
> r0AJMGK54RSxZWtpOFCl10OiZ9/JxDUAYDidE50tqHASt7aHpx2go/sL/rqMCmcs
> RlJ1bxVhCppird0hrHft6hgTmB3XXXDmlhXoz5o4ghto8D/VpPoUzDzBqe76pHVl
> rzoo/d12nNTu+f1yviFaSGIaW1oFzIyB/hqD2xfJBiQr3y2HACMB3OiV6OtfiOVP
> fY8U0UaL4VdHxUi5AL+8IUao4kUNOC7dePF8nIDXUBn+E+acicpESmLxGmoYDgVM
> DpAFmPVa9LCMiq5PfeCt7qYYJuVm6D6XiLGC76HwgbcBPXwuNhoKxHQ8DTxO9GvE
> ZbXeWiIKkqRjYJrHpdc/nkGI0mbr8969MuuspHId3ntgwEHYeX5vWLbf9pRce+vm
> TRqWJi25d8uuUhXDtIC7
> =8bUc
> -----END PGP SIGNATURE-----
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.alioth.debian.org/pipermail/nsspampgsql-devel/attachments/20120414/ee82ab81/attachment.html>


More information about the Nsspampgsql-devel mailing list