我发布了这个作为对原始问题的回答 postgreSQL permission denied when reading from file with \i command 但我现在意识到我应该发布一个单独的问题。
我的操作系统是Fedora 21,我安装了PostgreSQL-9.4
我正在尝试使用\ i命令读取文件,错误消息是权限被拒绝。我在文件上有chmod a+r
。
在我的系统上有3个用户[root,damo,postgres],我已经建立了一个团队[项目],有2个成员[damo,postgres]。我在所有相关目录上使用了chgrp
,我相信这些目录应该授予用户[postgres]访问各种文件的权限。
我用用户[postgres]访问pqsql但我的所有其他工作都在用户[damo]下。在pgsql中使用选项卡从之后的命令导航
../../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: -
有人可以提出一些建议吗?
答案 0 :(得分:0)
您使用的是Fedora 21,因此您可能默认启用了SELinux。 postgres
用户可能无权访问安全上下文user_home_t
。安全上下文由stat
输出显示。您可以使用ls
将其添加到ls -lZ
。
根据postgresql_selinux_unconfined_dbadm
,selinux布尔getsebool -a
看起来就像你想要的那样。
检查
getsebool postgresql_selinux_unconfined_dbadm
如果是off
,请尝试:
setsebool postgresql_selinux_unconfined_dbadm on
另外,要确定selinux是否拒绝访问,请检查系统日志或运行sealert
工具(SELinux警报浏览器)。