Eu configurei pam e nss em um servidor linux (ubuntu 16.04) para obter usuários e grupos de um banco de dados postgresql remoto. O login no servidor é bom, mas os grupos não podem ser carregados do banco de dados.
Se existirem entradas na tabela group_table, getent group falhará com a mensagem 'column number 3 is out of range 0..2' . Todos os sqls usados no nss-pgsql.conf parecem bons.
Eu uso as seguintes tabelas de banco de dados:
Conteúdo de nss-pgsql.conf:
connectionstring = hostaddr=123.456.789.10 dbname=nobodyexpects user=the password=spanishinquisition connect_timeout=1
getgroupmembersbygid = SELECT username FROM passwd_table WHERE gid = $1
getpwnam = SELECT username, passwd, gecos, homedir, shell, uid, gid FROM passwd_table WHERE username = $1
getpwuid = SELECT username, passwd, gecos, homedir, shell, uid, gid FROM passwd_table WHERE uid = $1
allusers = SELECT username, passwd, gecos, homedir, shell, uid, gid FROM passwd_table
getgrnam = SELECT groupname, passwd, gid FROM group_table WHERE groupname = $1
getgrgid = SELECT groupname, passwd, gid FROM group_table WHERE gid = $1
groups_dyn = SELECT ug.gid FROM passwd_table JOIN usergroups ug USING (uid) where username = $1 and ug.gid <> $2
allgroups = SELECT groupname, passwd, gid FROM group_table
Se a tabela group_table não contiver dados, recebo a mensagem de que o nome do grupo não pode ser encontrado e o grupo getent trabalha com grupos locais. Espero que alguém possa ajudar.
Descobriu que o grupo-SQL precisa de uma lista adicional de nomes de usuário. Alterando os SQLs para
resolve o problema.