0

我在 Centos7 系统上使用了奇异性,但我阻止了难以理解的类似权限问题。

(这是我自己做的一个离心机/再离心机容器,在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

而且错误仍然是一样的......我sudo chown -R apache:apache /tmp在 tmp 文件夹上做了一个,但它没有生效:/

4

1 回答 1

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

其中myuserHOMEPATH作为其主目录的帐户的用户名。

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

  chown -R myuser:mygroup /HOMEPATH

mygroup包含用户的组在哪里myuser。如果您不知道该组名应该是什么,请以身份登录myuser并运行该id -ng命令。组名与用户名相同是很常见的,因此如果该id命令的结果与myuser. 在某些系统上,您可以运行:

  chown -R myuser: /HOMEPATH

:后面只有一个冒号myuser,该命令将为您找出组名。如果这适用于您的系统,那么您不需要id -ng跳舞。

于 2018-10-12T20:35:56.670 回答