postgreSQL:使用\i读取文件的权限被拒绝

postgreSQL:使用\i读取文件的权限被拒绝,postgresql,Postgresql,我把这篇文章作为对上一篇文章中最初问题的回答 但我现在意识到我应该把它作为一个单独的问题发布 我的操作系统是Fedora21,我已经安装了PostgreSQL-9.4 我正在尝试使用\I命令读取文件,错误消息是权限被拒绝。我在文件上有chmoda+r。 在我的系统中有3个用户[root、damo、postgres],我建立了一个有2个成员[damo、postgres]的组[project]。我已经在所有相关目录上使用了chgrp,我认为这些目录应该授予用户[postgres]访问各种文件的权限。

我把这篇文章作为对上一篇文章中最初问题的回答 但我现在意识到我应该把它作为一个单独的问题发布

我的操作系统是Fedora21,我已经安装了PostgreSQL-9.4

我正在尝试使用\I命令读取文件,错误消息是权限被拒绝。我在文件上有
chmoda+r
。 在我的系统中有3个用户[root、damo、postgres],我建立了一个有2个成员[damo、postgres]的组[project]。我已经在所有相关目录上使用了
chgrp
,我认为这些目录应该授予用户[postgres]访问各种文件的权限。 我使用用户[postgres]访问pqsql,但我的所有其他工作都在用户[damo]下进行。在pgsql中,使用选项卡从命令导航\i在

    ../../home/damo
我不能再往前走了。这显然很重要,但我不知道这意味着什么。所以我把文件移到了那个位置,它仍然没有加载。这是来自
ls-l
stat

    $ ls -l testScript.sql 
    -rw-r--r--. 1 damo project 76 Nov  5 18:18 testScript.sql

    $ stat testScript.sql 
      File: ‘testScript.sql’
      Size: 76          Blocks: 8          IO Block: 4096   regular file
    Device: fd02h/64770d    Inode: 2623547     Links: 1
    Access: (0644/-rw-r--r--)  Uid: ( 1000/    damo)   Gid: ( 1001/ project)
    Context: unconfined_u:object_r:user_home_t:s0
    Access: 2015-11-05 18:18:06.082928881 +0000
    Modify: 2015-11-05 18:18:06.084928866 +0000
    Change: 2015-11-05 18:25:57.041183384 +0000
    Birth: -

有人能提出一些建议吗?

您使用的是Fedora 21,因此您可能默认启用了SELinux。
postgres
用户可能无权访问安全上下文
user\u home\t
。安全上下文由
stat
输出显示。您可以使用
ls-lZ
将其包含在
ls

selinux布尔值
postgresql\u selinux\u unconfined\u dbadm
看起来就像您想要的那样,根据
getsebool-a

检查

如果
关闭
,请尝试:

setsebool postgresql_selinux_unconfined_dbadm on

此外,要确定selinux是否是拒绝访问的对象,请检查系统日志或运行
sealert
工具(selinux警报浏览器)。

\i是一个psql命令,而不是PostgreSQL命令。因此,它将由您的psql执行。您可以从运行psql的位置访问该文件吗?你对所有目录都有阅读权限吗?我不确定我是否理解psql和PostgreSQL之间的区别?我对/home/damo/anotherLevel/上面的所有目录都有
chgrp
,但psql不允许我导航到它们。因此我将文件移动到psql允许我查看的位置,
chmod
仍然没有乐趣。我现在尝试了
chown postgres testScript.sql
并检查了文件的所有权是否已更改为postgres。psql仍然声明权限被拒绝。psql是命令行客户端,PostgreSQL是数据库服务器。通常,服务器运行在不同的帐户上(在Unix和Linux上是“postgres”)。您是否尝试过从根目录执行“su-postgres”,并查看是否可以作为用户“postgres”访问此文件?或者您可以简单地将文件移动到/tmp,然后看看它是否可以从那里工作?谢谢您的回复<代码>设置密码已设置为打开。我使用了
chmod-R 755 myHomeDirectory
,[postgres]现在可以访问这些文件了。我真的需要了解更多关于如何在我的系统上设置文件权限的信息。@fatherdamo哦,那么目录上可能缺少一个“x”位
setsebool postgresql_selinux_unconfined_dbadm on