Python 相同的权限,不同的权限?

Python 相同的权限,不同的权限?,python,linux,apache,permissions,selinux,Python,Linux,Apache,Permissions,Selinux,我正在通过CGI在Apache服务器中运行Python脚本。在脚本中,我尝试读取驻留在/home目录中的文件。但是,我可以读取一个文件,而不能读取另一个文件。这对于我理解权限以及哪些内容可以读取或不可以读取的目标来说是非常令人沮丧的 # Works file_tmp = open("/home/blastdbs/db_01.fasta", 'r') # Fails file_tmp = open("/home/blast_dbs/db_01.fasta", 'r') <type 'exc

我正在通过CGI在Apache服务器中运行Python脚本。在脚本中,我尝试读取驻留在/home目录中的文件。但是,我可以读取一个文件,而不能读取另一个文件。这对于我理解权限以及哪些内容可以读取或不可以读取的目标来说是非常令人沮丧的

# Works
file_tmp = open("/home/blastdbs/db_01.fasta", 'r')

# Fails
file_tmp = open("/home/blast_dbs/db_01.fasta", 'r')
<type 'exceptions.IOError'>: [Errno 13] Permission denied: '/home/blast_dbs/db_01.fasta' 

ls -l /home/
drwxr-xr-x.  2 myself myself  4096 Jun 17 18:18 blastdbs
drwxr-xr-x.  2 myself myself  4096 Jun 17 18:18 blast_dbs

ls -l /home/blastdbs/
-rwxr-xr-x. 1 myself myself   32484551 Jun 17 17:28 db_01.fasta
-rwxr-xr-x. 1 myself myself 2279012809 Jun 17 13:10 db_02.fasta

ls -l /home/blast_dbs/
-rwxr-xr-x. 1 myself myself  32484551 Jun 17 13:09 db_01.fasta
#有效
文件\u tmp=open(“/home/blastdbs/db_01.fasta”,'r')
#失败
文件\u tmp=open(“/home/blast\u dbs/db\u 01.fasta”,'r')
:[Errno 13]权限被拒绝:'/home/blast_dbs/db_01.fasta'
ls-l/主页/
drwxr-xr-x。我自己4096年6月17日18:18爆炸星展
drwxr-xr-x。我自己4096年6月17日18:18爆炸
ls-l/home/blastdbs/
-rwxr-xr-x。我自己32484551 6月17日17:28 db_01.fasta
-rwxr-xr-x。我自己2279012809年6月17日13:10分贝_02.fasta
ls-l/home/blast\U dbs/
-rwxr-xr-x。我自己32484551 6月17日13:09 db_01.fasta
顺便说一下,尝试读取db_02会产生相同的异常

我希望有人能对此有所了解。
谢谢

Apache服务器安装在启用SELinux的Linux发行版中。默认情况下,SELinux拒绝Apache读取/home文件夹中的文件。使用ls-Z可以检查文件的SELinux标签。在我的例子中,虽然常规(DAC)权限相同,并且没有设置ACL,但SELinux上下文不同:

下一个可以从Apache守护进程和脚本中读取:

unconfined_u:object_r:httpd_sys_content_t:
下一个是SELinux拒绝访问Apache的文件:

unconfined_u:object_r:user_home_t

Apache服务器安装在启用SELinux的Linux发行版中。默认情况下,SELinux拒绝Apache读取/home文件夹中的文件。使用ls-Z可以检查文件的SELinux标签。在我的例子中,虽然常规(DAC)权限相同,并且没有设置ACL,但SELinux上下文不同:

下一个可以从Apache守护进程和脚本中读取:

unconfined_u:object_r:httpd_sys_content_t:
下一个是SELinux拒绝访问Apache的文件:

unconfined_u:object_r:user_home_t

使用以下说明,但与httpd\u sys\u content\t一起标记目录。不要标记整个主目录,只标记为/home/myuser/apache


使用以下说明,但要与httpd\u sys\u content\t一起标记目录。不要标记整个主目录,只标记为/home/myuser/apache


顺便说一句,独立运行脚本时效果很好。因此,据我所知,apache环境或python cgi模块应该涉及到这种奇怪的行为。看看它会失败在哪里:如果您将
db_01.fasta
从blastdbs(工作的)复制到blast_dbs(不工作的)
cp blastdbs/db_01.fasta blast_dbs/
-->:[Errno 13]权限被拒绝:“/home/blast_dbs/db_01.fasta”独立脚本继续工作。@cantalapiedra您检查过Apache日志中是否有任何内容吗?您的脚本应该以不同的用户身份执行,但由于这两个文件都可以被任何人读取,因此问题应该是另一个。您如何知道“权限”是相同的?在最后一个x上有一个尾随的句点,这意味着设置了一些ACL-这些ACL可能会有所不同。顺便说一下,当独立运行脚本时,它工作得很好。因此,据我所知,apache环境或python cgi模块应该涉及到这种奇怪的行为。看看它会失败在哪里:如果您将
db_01.fasta
从blastdbs(工作的)复制到blast_dbs(不工作的)
cp blastdbs/db_01.fasta blast_dbs/
-->:[Errno 13]权限被拒绝:“/home/blast_dbs/db_01.fasta”独立脚本继续工作。@cantalapiedra您检查过Apache日志中是否有任何内容吗?您的脚本应该以不同的用户身份执行,但由于这两个文件都可以被任何人读取,因此问题应该是另一个。您如何知道“权限”是相同的?最后一个x上有一个尾随的句点,这意味着设置了一些ACL-这些ACL可能会有所不同。