如何禁止非超级用户在postgresql服务器中查看其他用户?
离。如果当前登录的用户不是超级用户,那么结果来自
来自pg_roles的SELECT *;
或
\杜
应该只是具有角色的行
答案 0 :(得分:3)
您可以撤消对系统目录中的身份验证ID表的访问权限:
REVOKE SELECT ON pg_catalog.pg_authid FROM public;
REVOKE SELECT ON pg_catalog.pg_auth_members FROM public;
请注意,撤消对pg_roles
的访问权限是不够的,因为pg_roles
只是pg_authid
的视图,手动运行视图查询或定义具有相同视图查询的新视图是微不足道的查询。 information_schema
视图也直接使用pg_authid
,不受撤销pg_roles
访问权限的影响。如果您取消对pg_roles
的访问权限,则无需撤消对pg_authid
的访问权限。
请注意,撤消对全局表的访问仍然是按数据库操作。
撤销对系统目录的访问可能会产生副作用,包括:
并且通常不被视为支持。
答案 1 :(得分:0)
revoke select on pg_roles from public;