【问题标题】:Is it possible for an owner to not have table-privileges?所有者是否可能没有表特权?
【发布时间】:2021-12-27 01:20:18
【问题描述】:

我们一直在尝试在其中一个数据库中创建许多角色和用户。有一次我遇到了这个问题,我发现它很难重现。

它在数据库中是可重现的,但是当我创建一个新数据库并尝试相同时它不会发生:(

ALTER TABLE public.table_name OWNER TO role_name;

通常,在我们运行此查询之后。 table_name 将是ownedrole_name 角色/用户。

如果我们运行以下查询,则在运行上述查询后:

select grantee, table_catalog, privilege_type, table_schema, table_name 
from information_schema.table_privileges 
where table_name = 'table_name' 
order by grantee, table_schema, table_name

我们会得到以下结果:

 role_name   | database_name   | INSERT       | public   | table_name
 role_name   | database_name   | DELETE       | public   | table_name
 role_name   | database_name   | SELECT       | public   | table_name
 role_name   | database_name   | UPDATE       | public   | table_name
 role_name   | database_name   | TRUNCATE     | public   | table_name
 role_name   | database_name   | REFERENCES   | public   | table_name
 role_name   | database_name   | TRIGGER      | public   | table_name

但是,在我授予所有权后,在一个特别糟糕的数据库中(我对语言感到抱歉,但上帝知道我经历过什么,我相信他这次会原谅我:P)在我授予所有权后,新角色将成为所有者,但它没有SELECT, INSERT 或任何特权。

所以,我的问题是:

是否存在当我们将表的所有权分配给角色时,该角色可以是所有者但仍然没有选择、插入、更新、删除权限的情况?

如果是,何时以及为什么?

【问题讨论】:

  • 是的,“一个对象的所有者可以选择撤销他们自己的普通权限,例如使一个表对自己和其他人都是只读的。但是所有者总是被视为持有所有授权选项,这样他们就可以随时重新授予自己的权限。”
  • 感谢您提供详细信息。我也看了说明书。在我的情况下,特权没有被撤销。在我检查权限时授予所有权后,立即选择权限缺失。
  • @mshabou:在创建对象时应用“默认权限”,而不是在所有权更改时应用。题目不同,不适用于本题。
  • 欧文的回答给了我一个很好的线索,明天将确认。谢谢@mshabou

标签: sql postgresql privileges postgresql-13


【解决方案1】:

角色可以是所有者,但仍然没有选择、插入、更新、删除权限?

是的。 The manual:

一个对象的所有者可以选择撤销他们自己的普通权限, 例如,使自己的表格只读以及 其他。但是所有者总是被视为持有所有赠款选择权,所以 他们总是可以重新授予自己的权限。

超级用户可以做任何所有者可以做的事情。

棘手的细节:所有者(或超级用户)可以从他自己(所有者)获得REVOKE 权限。如果所有权随后易手,新所有者将继承前所有者拥有的一组特权 - 加上新所有者可能已经拥有的任何特权。所以union角色之前的权限和所有者的权限。这些是所有者的新权限。

如果所有权再次易手,则整套特权将被传递!前任所有者失去了他直接拥有的所有权限。

但任何角色都可以通过其他角色的成员资格或PUBLIC 特权继承额外的特权。

密切相关:

【讨论】:

  • 在我的情况下,特权没有被撤销。在我检查权限时授予所有权后,选择权限立即丢失。
  • @LunaLovegood:就像我写的那样:如果特权已被撤销从前一个所有者,那么下一个所有者只会继承减少的特权集。这在ALTER TABLE OWNER TO role_name; 之后立即生效。
  • 哦,你的意思是表的前任所有者。嗯,也许这是可能的。让我检查一下。感谢您耐心指出。
  • @LunaLovegood:这绝对是可能的。我在发帖前进行了验证。
  • 嗯好吧,让我确认一下。目前远离mac。明天第一件事会检查这个并正确确认这个答案。谢谢您的帮助。既然你指出来了,我认为是这样的。
猜你喜欢
  • 1970-01-01
  • 2021-04-24
  • 1970-01-01
  • 1970-01-01
  • 2019-06-29
  • 2011-12-10
  • 1970-01-01
  • 1970-01-01
  • 2022-09-24
相关资源
最近更新 更多