Добрый день, посетители форума. Перейду сразу к делу.
Пытаюсь настроить права доступа для пользователей. Проблема сейчас заключается в следующем: я пытаюсь создать несколько групповых ролей и несколько обычных ролей входа, а затем отнести пользователей к каким-либо групповым ролям.
К примеру, я создал пользователя admin и группу administrators. В группе administrators я задал права суперпользователя со всеми возможностями. Роли "admin" я никаких прав не дал. Затем я выполнил запрос:
GRANT administrators TO admin;
CREATE ROLE admin LOGIN ENCRYPTED PASSWORD '...' NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION; GRANT administrators TO admin;
CREATE ROLE administrators
SUPERUSER INHERIT CREATEDB CREATEROLE REPLICATION;
Читали?
http://postgresql.ru.net/manual/role-membership.html
Ответ отыскался в последнем абзаце :
The role attributes LOGIN, SUPERUSER, CREATEDB, and CREATEROLE can be thought of as special privileges, but they are never inherited as ordinary privileges on database objects are. You must actually SET ROLE to a specific role having one of these attributes in order to make use of the attribute. Continuing the above example, we might choose to grant CREATEDB and CREATEROLE to the admin role. Then a session connecting as role joe would not have these privileges immediately, only after doing SET ROLE admin.
Т.е. права администратора не передаются по INHERIT, надо всегда делать SET ROLE
Каюсь, читал, но, видимо, не
Каюсь, читал, но, видимо, не внимательно. Спасибо за помощь.