You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL 12归档至指定目录时权限拒绝问题排查求助

问题分析与解决方案

核心原因:Ubuntu AppArmor 权限限制

Ubuntu 默认安装 PostgreSQL 时会启用 AppArmor 强制访问控制策略,该策略仅允许 PostgreSQL 进程访问预设路径(如默认数据目录 /var/lib/postgresql/12/main),你指定的归档目录 /data/db/postgres/archive 不在允许的访问列表中。即使文件系统层面权限配置正确,AppArmor 仍会拦截 PostgreSQL 服务的写入操作,导致权限拒绝报错。

验证 AppArmor 限制

执行以下命令查看当前 AppArmor 状态,确认 PostgreSQL 的 profile 是否处于 enforce 模式:

sudo aa-status

输出中若包含 postgresql 相关条目且状态为 enforce,则可确认是 AppArmor 导致的问题。

解决步骤

1. 修改 AppArmor 配置

推荐在本地配置文件中添加路径权限(避免系统升级覆盖默认配置):
编辑 /etc/apparmor.d/local/usr.sbin.postgres 文件,添加以下内容:

/data/db/postgres/archive/ r,
/data/db/postgres/archive/** rw,
  • r:允许读取目录本身
  • rw:允许读取和写入目录下的所有文件

2. 重新加载 AppArmor 并重启 PostgreSQL

sudo systemctl reload apparmor
sudo systemctl restart postgresql@12-main

3. 优化归档命令(可选但推荐)

将 postgresql.conf 中的归档命令修改为带引号的形式,避免路径包含特殊字符时出现异常:

archive_command = 'cp "%p" "/data/db/postgres/archive/%f"'

额外检查

确认 PostgreSQL 数据目录下的 pg_wal 目录权限正常:

ls -ld /var/lib/postgresql/12/main/pg_wal

确保该目录归 postgres:postgres 所有,且权限为 drwx------。

内容的提问来源于stack exchange,提问作者Marc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 17:01:21