我安装了 postgresql 10,我想对其他用户隐藏用户/角色的名称。我搜索了其他帖子,有人建议:
REVOKE SELECT ON pg_catalog.pg_authid FROM public;
REVOKE SELECT ON pg_catalog.pg_auth_members FROM public;
Run Code Online (Sandbox Code Playgroud)
完成所有这些操作后,user1 无法深入了解用户的信息,(Error retrieving roles from the database server. ERROR: permission denied for relation pg_auth_members)但仍可以将它们全部列出,如下图所示

当然 user1 不是超级用户。
我已经测试过这个没有效果:
REVOKE SELECT ON pg_catalog.pg_roles FROM user1;
REVOKE SELECT ON pg_catalog.pg_user FROM user1;
Run Code Online (Sandbox Code Playgroud)
对此也进行了测试,但没有效果:
REVOKE SELECT ON pg_catalog.pg_authid FROM user1;
REVOKE SELECT ON pg_catalog.pg_auth_members FROM user1;
Run Code Online (Sandbox Code Playgroud)
如果我启动下一个语句,用户将无法登录并且一切都已损坏:
REVOKE SELECT ON pg_catalog.pg_roles FROM public;
REVOKE SELECT ON pg_catalog.pg_user FROM public;
Run Code Online (Sandbox Code Playgroud)
有没有办法实现这一目标?对我来说向其他用户隐藏用户的名称非常重要。
背景:我正在创建一个黑客 ctf(捕获标志)虚拟机。这是挑战之一......重点是避免用户可以看到“正确的数据库用户名”进行连接。这是他/她必须在数据库中查找提示和其他加密内容的内容。
编辑:“悲伤”的解决方法是创建数百个虚拟用户以“尝试隐藏”真实用户......但它必须是一个优雅的解决方案。有什么帮助吗?