4

PostgreSQL 10.6 和 CentOS 7

pg_ctl status
pg_ctl: could not access directory "/var/lib/pgsql/data": Permission denied`

鉴于拥有所有权,将无法pg_ctl访问此内容? /var/lib/pgsql/datapostgres:postgres

drwx------   3 postgres postgres   94 Nov 14 06:43 pgsql

如何在不产生漏洞的情况下解决此问题?为什么这会引发错误?

附加信息(编辑):

su - postgres
cd /var/lib
/var/lib/pgsql: drwx------  3 postgres postgres   94 Nov 14 06:43 pgsql
/var/lib/pgsql/10: drwx------ 4 postgres postgres  33 Nov 14 06:38 10
/var/lib/pgsql/10/data:  drwx------ 20 postgres postgres 4096 Nov 15 03:47 data
4

2 回答 2

2

这需要几个故障排除步骤来查明真正的问题。

  1. 找出 Linux 中该位置的用户/所有者和文件权限:
Ls - al /var/lib/pgsql/data/

ls - al /var/lib/pgsql/

  1. 尝试换成postgres用户,访问1中的目录

    # su - postgres

以下链接应填写空白,以便检查一些步骤。在 #2 链接上,您没有移动目录,但您会看到确保目录准备就绪/可访问的步骤

https://wiki.postgresql.org/wiki/First_steps

https://www.digitalocean.com/community/tutorials/how-to-move-a-postgresql-data-directory-to-a-new-location-on-ubuntu-16-04

更新

从评论来看,pg ctl 似乎是作为用户 x 运行的......并且缺乏足够的权限

在不了解您的环境的情况下,最好让 postgres 成为运行 pg ctl 的用户,因为它已经在做相关的事情了。

于 2018-11-15T13:47:34.753 回答
2

在 UNIX 中,每个进程都以启动可执行文件的用户的权限运行,而不是可执行文件的所有者(除非设置了SETUID标志)。

所以谁拥有它并不重要,但是当你运行它时你pg_ctl必须是用户。postgres

于 2018-11-15T16:31:39.030 回答