CentOS 7 pg_ctl:无法访问目录“/var/lib/pgsql/data”:权限被拒绝
CentOS 7 pg_ctl: could not access directory "/var/lib/pgsql/data": Permission denied
PostgreSQL 10.6 和 CentOS 7
pg_ctl status
pg_ctl: could not access directory "/var/lib/pgsql/data": Permission denied`
如果 /var/lib/pgsql/data
拥有 postgres:postgres
的所有权,pg_ctl
不会访问它吗?
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
这需要很少的故障排除步骤来查明真正的问题。
- 在 Linux 中找到该位置的 user/owner 和文件权限:
Ls - al /var/lib/pgsql/data/
ls - al /var/lib/pgsql/
尝试换成postgres用户,访问1
中的目录
# su - postgres
下面的 links 应该填写几个步骤的空白来检查事情。在 #2 link 上,您没有移动目录,但您看到确保目录为 ready/accessible
的步骤
https://wiki.postgresql.org/wiki/First_steps
更新
从评论来看,pg ctl 似乎是 运行 作为用户 x... 并且缺少足够的权限
在不太了解您的环境的情况下,最好让 postgres 成为 运行s pg ctl 的用户,因为它已经在做相关的事情了..
在 UNIX 中,每个进程 运行 具有启动可执行文件的用户的权限,而不是可执行文件的所有者(除非设置了 SETUID 标志).
所以谁拥有 pg_ctl
并不重要,但当您 运行 它时,您必须是用户 postgres
。
PostgreSQL 10.6 和 CentOS 7
pg_ctl status
pg_ctl: could not access directory "/var/lib/pgsql/data": Permission denied`
如果 /var/lib/pgsql/data
拥有 postgres:postgres
的所有权,pg_ctl
不会访问它吗?
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
这需要很少的故障排除步骤来查明真正的问题。
- 在 Linux 中找到该位置的 user/owner 和文件权限:
Ls - al /var/lib/pgsql/data/
ls - al /var/lib/pgsql/
尝试换成postgres用户,访问1
中的目录# su - postgres
下面的 links 应该填写几个步骤的空白来检查事情。在 #2 link 上,您没有移动目录,但您看到确保目录为 ready/accessible
的步骤https://wiki.postgresql.org/wiki/First_steps
更新
从评论来看,pg ctl 似乎是 运行 作为用户 x... 并且缺少足够的权限
在不太了解您的环境的情况下,最好让 postgres 成为 运行s pg ctl 的用户,因为它已经在做相关的事情了..
在 UNIX 中,每个进程 运行 具有启动可执行文件的用户的权限,而不是可执行文件的所有者(除非设置了 SETUID 标志).
所以谁拥有 pg_ctl
并不重要,但当您 运行 它时,您必须是用户 postgres
。