我目前正在 RHEL6 系统上从源代码安装 PostgreSQL。我通常遵循官方文档的指导(http://www.postgresql.org/docs/9.4/static/installation.html)。
不幸的是,没有太多关于 init.d/startup 脚本的信息。以下是我目前正在努力解决的问题:
- OOB 启动脚本(https://github.com/postgres/postgres/blob/master/contrib/start-scripts/linux) 被复制到 /etc/init.d/postgres 并做了少许修改以反映我的环境(例如前缀、数据路径等);文件归 root 所有并具有 755 权限
- 以root身份执行以下命令以确保在启动时执行:chkconfig --add postgresql; chkconfig postgresql on;
- 以 root 身份运行脚本,没有问题(例如 /etc/init.d/postgresql status)
- 但是,当以 postgres 用户(配置为运行 PostgreSQL 的用户)身份执行脚本时,脚本会返回密码提示。
这种体验与 PostgreSQL 的打包版本(即 RPM)的功能大不相同。我能够以 root 和 postgres 身份执行该脚本:
[root@ulvjived80 ~]# /etc/init.d/postgresql-9.4 status
postgresql-9.4 is stopped
[postgres@ulvjived80 ~]$ /etc/init.d/postgresql-9.4 status
postgresql-9.4 is stopped
我在网上搜索了很多,发现被引用最多的解决方案是在 /etc/sudoers 文件中允许相关用户执行命令/脚本。但是,RPM 似乎没有这样做。
我们使用的商业应用程序也以相同的方式运行,即启动脚本可以由 root 和相关的非 root 用户执行。
关于如何模仿 RPM 功能,有什么想法吗?
谢谢你!