LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

PostgreSQL 开始收紧 public 模式访问权限!

maoxiaoming
2025年8月19日 10:34 本文热度 73

你想控制用户在 public 模式中创建表的权限吗?

特性提交日志

撤销从 public 模式创建表的权限,现在由 pg_database_owner 拥有。

这将默认访问控制列表 (ACL) 切换为自 CVE-2018-1058 以来文档所推荐的设置。升级将保留任何旧的所有权和 ACL。之前未采纳 2018 年建议的站点应重新审视。从头开始部署新数据库集群的方案可能需要创建模式、授予更多权限等。外部测试套件可能需要此类更新。

讨论:https://postgr.es/m/20201031163518.GB4039133@rfd.leadboat.com

示例

在之前的 PostgreSQL 版本中,默认允许任何用户连接到任何数据库,并在默认创建的 "public" 模式中创建新表(以及视图等)。有一些人认为这会产生安全问题,会将 public 模式删除掉,或者收紧 public 模式的访问权限。

但现在情况发生了变化。在新的 PostgreSQL 版本中,默认情况下,非超级用户账户将无法在非其拥有的数据库的 public 模式中创建表。

让我们来看一下:

CREATE DATABASE x;
CREATE USER test;
CREATE DATABASE test WITH OWNER test;

上面,我们创建了 test 用户和两个数据库,"x" 数据库由超级用户拥有,以及由 test 用户拥有的 "test" 数据库。

当我们进入两个数据库创建表时,结果如下:

psql -U test -d x -c 'create table a (b int)'
ERROR:  permission denied for schema public
LINE 1: create table a (b int)
                     ^

psql -U test -d test -c 'create table a (b int)'

当然,你仍然可以向 public 模式授予所有权限,以保留以前的行为,但默认情况下,将不再允许在属于其他用户的数据库中创建对象。

非常不错的特性。感谢社区的所有相关人员。

参考

提交日志:https://git.postgresql.org/pg/commitdiff/b073c3ccd06e4cb845e121387a43faa8c68a7b62

转自:https://mp.weixin.qq.com/s/a_MnPYVxVjeNZIhtSYV5ZA


该文章在 2025/8/19 10:35:16 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2025 ClickSun All Rights Reserved