以非 root 用户身份运行 init.d 启动脚本(与 PostgreSQL 相关)

以非 root 用户身份运行 init.d 启动脚本(与 PostgreSQL 相关)

我目前正在 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 功能,有什么想法吗?

谢谢你!

相关内容