Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 解决作为cron作业运行pgback时发现的权限问题_Postgresql_Ubuntu_Cron - Fatal编程技术网

Postgresql 解决作为cron作业运行pgback时发现的权限问题

Postgresql 解决作为cron作业运行pgback时发现的权限问题,postgresql,ubuntu,cron,Postgresql,Ubuntu,Cron,我在一台ubuntu主机上的cron作业设置中有一个权限错误,无法使用pgbackback进行数据库备份 错误[041]::无法打开/var/lib/postgresql/10/main/global/pgu控件 cron作业已设置为在我的管理员帐户下运行。我看到的唯一解决方法是将目录权限更改为/var/lib/postgresql/10/main,以允许我的管理员帐户进入,我不想这样做 显然,只有postgres用户可以访问这个目录,我发现不可能使用该用户设置cron作业。 i、 e 我还能做

我在一台ubuntu主机上的cron作业设置中有一个权限错误,无法使用pgbackback进行数据库备份

错误[041]::无法打开/var/lib/postgresql/10/main/global/pgu控件

cron作业已设置为在我的管理员帐户下运行。我看到的唯一解决方法是将目录权限更改为/var/lib/postgresql/10/main,以允许我的管理员帐户进入,我不想这样做

显然,只有postgres用户可以访问这个目录,我发现不可能使用该用户设置cron作业。 i、 e


我还能做什么?本手册中没有关于这方面的更多信息。

仅允许PostgreSQL OS用户(
postgres
)及其组访问PostgreSQL数据目录。请从以下位置查看此代码:

/*
*检查目录是否具有正确的权限。如果没有,拒绝。
*
*仅允许两种可能的模式,0700和0750。后一种模式
*指示应允许在所有新的服务器上执行组读取/执行
*创建文件和目录。
*
*XXX在Windows上时暂时禁止检查,因为可能没有
*适当支持Unix-y文件权限。需要想出一个解决办法
*适用于Windows的合理检查。
*/
#如果!已定义(WIN32)&!已定义(uuu CYGWIN_uuuu)
if(统计模式和PG模式屏蔽组)
电子报告(致命,
(errcode(errcode\u对象\u未处于\u先决条件\u状态),
errmsg(“数据目录\%s\”具有无效权限”,
数据目录),
errdetail(“权限应该是u=rwx(0700)或u=rwx,g=rx(0750)”);
#恩迪夫
如果数据目录允许该组进入,则该组通常还具有
pg_control
的权限

因此,如果您为该用户指定了
postgres
”主用户组,则可以允许该用户进入

postgres
允许创建
crontab
,前提是系统已相应配置

man crontab

对于不同的用户,可以允许或不允许运行
cron
作业。为此,请使用
cron.allow
cron.deny
文件。如果
cron.allow
文件存在,则 必须在其中列出用户才能允许使用
cron
如果
cron.allow
文件不存在,但
cron.deny
文件存在,则不能在中列出用户
cron.deny
文件以使用
cron
。如果这两个文件都不存在,则只允许超级用户使用
cron
。限制访问
cron
是在
/etc/security/access.conf
中使用PAM身份验证来设置用户,允许或不允许用户在中使用
crontab
或修改系统
cron
作业
/etc/cron.d/
目录


如果您能够在提示下
sudo-u postgres
,那么您也可以在
cron
作业中执行此操作

您的问题并没有显示您试图运行的实际命令,而是简单地以
postgres
的形式运行
thiscondmand

sudo -u postgres thiscommand
如果您有
su
但没有
sudo
,则自适应是次要的,但并非完全微不足道:

su -c thiscommand postgres

使用
sudo
可以对作为另一个用户可以做的事情设置细粒度的限制,因此从这个意义上说,它比完全无限制
su

更安全。在cron中添加了'postgres'。
su -c thiscommand postgres