奇点-Centos7-权限

时间:2018-10-12 09:30:21

标签: centos7 singularity-container

我在Centos7系统上使用singularity,但在无法理解的类似许可问题上却封锁了。

(这是我自己制作的可在Ubuntu系统上完美运行的离心机/离心机容器)

命令

singularity exec /HOMEPATH/Singularity/centrifuge_recentrifuge.simg centrifuge -x /HOMEPATH/Centrifuge/bacteria-database-centrifuge -1 /HOMEPATH/work_directory/centrifuge_recentrifuge/reads/TTOTO_R1_001.fastq.gz -2 /HOMEPATH/work_directory/centrifuge_recentrifuge/reads/TOTO_R2_001.fastq.gz -S /HOMEPATH/work_directory/centrifuge_recentrifuge/classification_result --report-file /HOMEPATH/work_directory/centrifuge_recentrifuge/classification_summary

错误日志

Error: Could not open alignment output file /HOMEPATH/work_directory/centrifuge_recentrifuge/classification_result
Error: Encountered internal Centrifuge exception (#1)
Command: /usr/local/bin/centrifuge-class --wrapper basic-0 -x /HOMEPATH/Centrifuge/bacteria-database-centrifuge -S /HOMEPATH/work_directory/centrifuge_recentrifuge/classification_result --report-file /HOMEPATH/work_directory/centrifuge_recentrifuge/classification_summary -1 /tmp/229778.inpipe1 -2 /tmp/229778.inpipe2 
(ERR): centrifuge-class exited with value 1

似乎奇异性不能写tmp文件或写classification_result文件,也不能两者都写:/

工作目录权限

ls -Z /HOMEPATH/work_directory/centrifuge_recentrifuge/
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 reads

ls -Z /HOMEPATH/work_directory/centrifuge_recentrifuge/reads/
-rw-r--r--. root root system_u:object_r:httpd_sys_content_t:s0 TOTO_R1_001.fastq.gz
-rw-r--r--. root root system_u:object_r:httpd_sys_content_t:s0 TOTO_R2_001.fastq.gz

编辑1解决权限问题

ls -Z centrifuge_recentrifuge
drwxr-xr-x. apache apache system_u:object_r:httpd_sys_content_t:s0 reads

ls -Z centrifuge_recentrifuge/reads/
-rw-r--r--. apache apache system_u:object_r:httpd_sys_content_t:s0 TOTO_R1_001.fastq.gz
-rw-r--r--. apache apache system_u:object_r:httpd_sys_content_t:s0 TOTO_R2_001.fastq.gz

错误仍然相同... 我在tmp文件夹上制作了一个sudo chown -R apache:apache /tmp,但没有生效:/

1 个答案:

答案 0 :(得分:1)

ls -Z /HOMEPATH/work_directory/centrifuge_recentrifuge/
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 reads

这表示centrifuge_recentrifuge目录的唯一所有者有权在该目录中创建项目,该目录的所有者为用户root。因此,只有root可以在该目录中创建项目。

大概您在以singularity登录时没有运行root程序,这就是为什么该程序无法创建classification_result文件的原因。如果可以做到的话,它也将无法创建classification_summary文件。

我不知道您是否有特殊的理由将这个目录归root所有。如果这样做,则该程序能够创建这些文件的唯一方法是以root用户身份运行该文件。当然,使用root帐户进行系统管理以外的其他操作通常是一个坏主意。

通常的方法是将HOMEPATH目录及其下面的所有内容归创建该特定root的个人(非HOMEPATH)用户所有。在此模型中,该个人用户将是centrifuge_recentrifuge目录的所有者,因此,如果以该用户身份登录后运行singularity程序,它将能够在该目录中创建所需的任何文件。

要从现在的状态开始,要更改HOMEPATH的所有权及其下的所有内容,可以以root身份登录(或使用sudo),然后运行:

  chown -R myuser /HOMEPATH

其中myuser是以HOMEPATH作为其主目录的帐户的用户名。

这足以让程序运行。但是,为了完整起见,您还应该更改HOMEPATH的组所有权及其下的所有内容,以匹配单个用户的组。为此,请运行:

  chown -R myuser:mygroup /HOMEPATH

其中mygroup是包含用户myuser的组。如果您不知道该组名应该是什么,请以myuser登录并运行id -ng命令。组名通常与用户名相同,因此,如果该id命令的结果与myuser相同,请不要感到惊讶。在某些系统上,您可以运行:

  chown -R myuser: /HOMEPATH

,在:之后只有一个冒号myuser,该命令将为您找出组名。如果这在您的系统上可行,那么您就不需要进行id -ng跳舞了。