Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ef53j-0006C8-85 for pgsql-admin@arkaria.postgresql.org; Fri, 26 Jan 2018 14:32:51 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ef53i-00046F-Ge for pgsql-admin@arkaria.postgresql.org; Fri, 26 Jan 2018 14:32:50 +0000 Received: from makus.postgresql.org ([2001:4800:1501:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1ef53i-000464-6Q for pgsql-admin@lists.postgresql.org; Fri, 26 Jan 2018 14:32:50 +0000 Received: from host3.dynacom.ondsl.gr ([62.103.35.211] helo=smadev.internal.net) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1ef53e-0001Ep-9Q for pgsql-admin@postgresql.org; Fri, 26 Jan 2018 14:32:49 +0000 Received: from smadev.internal.net (smadev [10.9.200.131]) by smadev.internal.net (8.15.2/8.15.2) with ESMTP id w0QEWbow098612; Fri, 26 Jan 2018 16:32:37 +0200 (EET) (envelope-from achill@matrix.gatewaynet.com) To: pgsql-admin@postgresql.org From: Achilleas Mantzios Subject: permission denied (even when run as postgres) for views after making their owner nosuperuser Message-ID: Date: Fri, 26 Jan 2018 16:32:36 +0200 User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:52.0) Gecko/20100101 Thunderbird/52.5.2 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Content-Language: en-US List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk Hello, I have a strange issue here, demonstrated by the below script, run as postgres (superuser), problem is in both 9.3 and 10.0 : dynacom=# create table testforfu (id serial, descr name); CREATE TABLE dynacom=# insert into testforfu (descr) values('bar'); INSERT 0 1 dynacom=# CREATE ROLE fuser; CREATE ROLE dynacom=# ALTER ROLE fuser WITH SUPERUSER INHERIT CREATEROLE CREATEDB LOGIN NOREPLICATION NOBYPASSRLS; ALTER ROLE dynacom=# create schema fuser; CREATE SCHEMA dynacom=# alter schema fuser owner to fuser ; ALTER SCHEMA dynacom=# SET search_path = fuser,pg_catalog; SET dynacom=# create view fuser.testforfu as select * from public.testforfu; CREATE VIEW dynacom=# alter view fuser.testforfu owner to fuser ; ALTER VIEW dynacom=# create table fuser.testforfutbl (descr TEXT); CREATE TABLE dynacom=# alter table fuser.testforfutbl owner to fuser ; ALTER TABLE dynacom=# select * from fuser.testforfu ;  id | descr ----+-------   1 | bar (1 row) dynacom=# alter user fuser nosuperuser ; ALTER ROLE dynacom=# select * from fuser.testforfutbl ;  descr ------- (0 rows) dynacom=# select * from fuser.testforfu ; ERROR:  permission denied for relation testforfu So the select on the table works, but not on the select on the view. If I remake fuser as superuser then the select works ok : alter user fuser superuser ; ALTER ROLE dynacom=# select * from fuser.testforfu ;  id | descr ----+-------   1 | bar (1 row) In fact, there is no way on earth I can regain access to view fuser.testforfu for any user (postgres included) unless I change its ownership (or make fuser a superuser). is this normal? documented? Am I missing anything? -- Achilleas Mantzios IT DEV Lead IT DEPT Dynacom Tankers Mgmt