首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >奇点- Centos7 -权限

奇点- Centos7 -权限
EN

Stack Overflow用户
提问于 2018-10-12 17:30:21
回答 1查看 89关注 0票数 0

我在Centos7系统上使用singularity,但遇到了难以理解的like权限问题。

(这是我自己做的一个离心机/离心容器,可以在Ubuntu系统上完美地工作)

命令

代码语言:javascript
复制
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

错误日志

代码语言:javascript
复制
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

看来奇点不能写临时文件,也不能写classification_result文件,或者两者都写:/

工作目录权限

代码语言:javascript
复制
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解决权限问题

代码语言:javascript
复制
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,但是它没有生效:/

EN

回答 1

Stack Overflow用户

发布于 2018-10-13 04:35:57

代码语言:javascript
复制
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可以在该目录中创建项目。

假设您在以root身份登录时没有运行singularity程序,这就是该程序无法创建classification_result文件的原因。它也不能创建一个classification_summary文件,如果它已经尝试这么做的话。

我不知道您是否有特殊的原因将此目录归root所有。如果您这样做了,那么程序创建这些文件的唯一方法就是您以root用户身份运行它。当然,使用root帐户进行系统管理以外的任何事情通常都不是一个好主意。

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

要从您现在所处的位置转到这种情况,要更改HOMEPATH及其下面的所有内容的所有权,您可以以root身份登录(或使用sudo),然后运行:

代码语言:javascript
复制
  chown -R myuser /HOMEPATH

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

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

代码语言:javascript
复制
  chown -R myuser:mygroup /HOMEPATH

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

代码语言:javascript
复制
  chown -R myuser: /HOMEPATH

myuser后面只有一个冒号:,该命令将为您确定组名。如果这能在你的系统上工作,那么你就不需要跳id -ng舞了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52776499

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档