tables permissions once again

Started by Partyka Robertabout 25 years ago2 messages
#1Partyka Robert
bobson@saturn.alpha.pl

Hi

Yeach ... I can revoke from public now ;), but .....
look at this:
#create database a
CREATE

#\c a
#create table ala(a int4);
CREATE

#\z
Access permissions for database "a"
Relation | Access permissions
----------+--------------------
ala |
(1 row)

#revoke all on ala from public;
CHANGE
#\z
Access permissions for database "a"
Relation | Access permissions
----------+-----------------------
ala | {"=","postgres=arwR"}
(1 row)

hmmm.... is everything work ok ?

regards
Robert 'BoBsoN' Partyka

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Partyka Robert (#1)
Re: tables permissions once again

Partyka Robert <bobson@saturn.alpha.pl> writes:

#create table ala(a int4);
CREATE

#\z
Access permissions for database "a"
Relation | Access permissions
----------+--------------------
ala |
(1 row)

#revoke all on ala from public;
CHANGE
#\z
Access permissions for database "a"
Relation | Access permissions
----------+-----------------------
ala | {"=","postgres=arwR"}
(1 row)

hmmm.... is everything work ok ?

Yup, that's the expected behavior. Initially the relacl entry for a new
table is NULL, which the system will interpret as default access rights
(namely, world=no rights, owner=all rights). As soon as you issue a
GRANT or REVOKE, a real ACL gets installed --- which will consist of the
default access rights made explicit and then modified per your GRANT or
REVOKE. At that point you see something in \z, whereas psql doesn't
show anything in \z for a NULL acl entry.

AFAIK it's always worked like that...

regards, tom lane