这是关于 Metasploit 框架的。
root@kali:~# service postgresql start
[....] Starting PostgreSQL 9.1 database server: main[....] The
PostgreSQL server failed to start. Please check the log output:
2015-05-23 19:07:58 EDT LOG: database system was interrupted;
last known up at 2015-05-23 16:52:00 EDT 2015-05-23 19:07:58
EDT FATAL: could not open file "/etc/ssl/certs/ssl-cert-snakeoil.pem":
Permission denied 2015-05-23 19:07:58 EDT LOG: startup process
(PID 3466) exited with exit code 1 2015-05-23 19:07:58 EDT LOG:
aborting startup due to startup [FAILss failure ... failed! failed!
我的第一个问题是,PostgreSQL 工作得很好。是什么事情突然引发了这个问题?
其次,如何解决这个问题?
答案1
这很可能是以下结果Postgres fsync 权限错误。
引用的 Wiki 页面指出,该问题将在 2015-06-04 更新版本中得到修复,并且它影响了以下用户:
- 应用了 9.4.2、9.3.7、9.2.11、9.1.16 和/或 9.0.20 PostgreSQL 更新
- 数据目录 ( ) 下有一个或多个文件或目录,或者指向一个或多个文件或目录的符号链接,这些文件或目录不属于用户
postgres
(或其他安装所有者)或不可写入。postgres
PGDATA
它接着说,条件 2 对于启用 SSL 的 Debian 和 Ubuntu 安装的 PostgreSQL 9.1、9.0 及更早版本来说很常见,但也可能会影响其他用户。其他平台上的大多数用户不受影响,因为默认情况下,其下的所有文件和链接PGDATA
均归该postgres
用户所有。
答案2
在你引用的文字中,原因是:
致命:无法打开文件“/etc/ssl/certs/ssl-cert-snakeoil.pem”:
权限被拒绝
如果你真的想使用蛇油证书,你需要确保 PostgreSQL 可以读取它。但最好生成您自己的证书并使用它。 (这些证书被称为蛇油.)
答案3
解决方案是使用acl,并允许postgres用户(称为postgres,或psql,检查你的密码文件)读取
/etc/ssl/certs/ssl-cert-snakeoil.pem
如果用户名为 psql 执行此操作
setfacl -m u:psql:r-- /etc/ssl/certs/ssl-cert-snakeoil.pem
当然检查 acl 是否处于活动状态
mount |grep -w / |grep acl
如果不编辑 fstab(之前复制)和默认值之后,则放置 acl
然后mount -o remount /
使用 setfacl 设置 actl