REVOKE/GRANT ALL ON FUNCTION 更改了哪些表和列
Which tables and columns are altered for both REVOKE/GRANT ALL ON FUNCTION
哪些 tables/columsn 针对以下查询进行了更改:
REVOKE ALL PRIVILEGES ON FUNCTION "..."() FROM PUBLIC CASCADE;
-- function_owner can still update the function
GRANT ALL PRIVILEGES ON FUNCTION "..."() TO function_owner CASCADE;
REVOKE ALL PRIVILEGES ON FUNCTION "..."() FROM function_owner CASCADE;
-- function_owner can't update the function.
GRANT ALL PRIVILEGES ON FUNCTION "..."() TO function_owner CASCADE;
-- function_owner can now update the function.
我知道 pg_catalog.pg_proc.proacl
被修改了。还有其他表和列吗?
pg_proc.proacl
确实是唯一修改的列,如果您对某个函数具有 GRANT
或 REVOKE
权限。
有两点需要牢记:
创建函数时,它具有默认权限(PUBLIC
并且所有者可能 EXECUTE
它)并且 proacl
列为 NULL(这表示默认权限)。
这就是为什么该列在开头是空的,并且在您 REVOKE
PUBLIC
的权限之后包含一个值。
如果您 REVOKE
之前未授予过权限,则不会发生任何事情。同样,如果您 GRANT
已经授予的权限,则不会发生任何事情。
你的GRANT
就是这样的无操作,因为所有者默认有EXECUTE
权限。在使用 REVOKE
.
更改默认权限之前,您只是看不到它
哪些 tables/columsn 针对以下查询进行了更改:
REVOKE ALL PRIVILEGES ON FUNCTION "..."() FROM PUBLIC CASCADE;
-- function_owner can still update the function
GRANT ALL PRIVILEGES ON FUNCTION "..."() TO function_owner CASCADE;
REVOKE ALL PRIVILEGES ON FUNCTION "..."() FROM function_owner CASCADE;
-- function_owner can't update the function.
GRANT ALL PRIVILEGES ON FUNCTION "..."() TO function_owner CASCADE;
-- function_owner can now update the function.
我知道 pg_catalog.pg_proc.proacl
被修改了。还有其他表和列吗?
pg_proc.proacl
确实是唯一修改的列,如果您对某个函数具有 GRANT
或 REVOKE
权限。
有两点需要牢记:
创建函数时,它具有默认权限(
PUBLIC
并且所有者可能EXECUTE
它)并且proacl
列为 NULL(这表示默认权限)。这就是为什么该列在开头是空的,并且在您
REVOKE
PUBLIC
的权限之后包含一个值。如果您
REVOKE
之前未授予过权限,则不会发生任何事情。同样,如果您GRANT
已经授予的权限,则不会发生任何事情。你的
GRANT
就是这样的无操作,因为所有者默认有EXECUTE
权限。在使用REVOKE
. 更改默认权限之前,您只是看不到它