Поставил NSS модуль для postgresql. Он соединён с сервером базы данных по сети через внешний IP (но находится сервер в той же системе)
Если написать в конфиг очередность проверки согласно документации (compat, pgsql) то при попытке залогиниться сообщается: Could not connect to database и продолжается проверка в локальном списке. Если убрать nscd то проверка в локальном списке не продолжается а "повисает" (вроде без таймаута, навсегда). В логе postgresql ошибок нет. Если очерёдность поменять то всё отлично работает. (Но менять не хочется - хочу дать возможность юзерам пользоваться именами типа "root" и другими системными) Ещё не могу понять как эту nss дебажить, никуда вроде она не пишет логов Вот конфиг: # cat /etc/nsswitch.conf # /etc/nsswitch.conf # # Example configuration of GNU Name Service Switch functionality. # If you have the `glibc-doc' and `info' packages installed, try: # `info libc "Name Service Switch"' for information about this file. # # extended with example entries using the nss-pgsql module. #passwd: compat pgsql #group: compat pgsql #shadow: compat pgsql passwd: pgsql compat group: pgsql compat shadow: pgsql compat hosts: files dns networks: files protocols: db files services: db files ethers: db files rpc: db files netgroup: nis # cat /etc/nss-pgsql.conf connectionstring = hostaddr=192.168.1.75 dbname=dhcs-new user=nss password=123 connect_timeout=1 # you can use anything postgres accepts as table expression # Must return "usernames", 1 column, list getgroupmembersbygid = SELECT username FROM passwd_table WHERE gid = $1 # Must return passwd_name, passwd_passwd, passwd_gecos, passwd_dir, passwd_shell, passwd_uid, passwd_gid getpwnam = SELECT username, passwd, gecos, homedir, shell, uid, gid FROM passwd_table WHERE username = $1 # Must return passwd_name, passwd_passwd, passwd_gecos, passwd_dir, passwd_shell, passwd_uid, passwd_gid getpwuid = SELECT username, passwd, gecos, homedir, shell, uid, gid FROM passwd_table WHERE uid = $1 # All users allusers = SELECT username, passwd, gecos, homedir, shell, uid, gid FROM passwd_table # Must return group_name, group_passwd, group_gid getgrnam = SELECT groupname, passwd, gid, ARRAY(SELECT username FROM usergroups WHERE usergroups.gid = group_table.gid) AS members FROM group_table WHERE groupname = $1 # Must return group_name, group_passwd, group_gid getgrgid = SELECT groupname, passwd, gid, ARRAY(SELECT username FROM usergroups WHERE usergroups.gid = group_table.gid) AS members FROM group_table WHERE gid = $1 # Must return gid. %s MUST appear first for username match in where clause 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, ARRAY(SELECT username FROM usergroups WHERE usergroups.gid = group_table.gid) AS members FROM group_table
signature.asc
Description: PGP signature