【问题标题】:Rmpi, OpenCPU, and Apparmor: DENIED request for "/"Rmpi、OpenCPU 和 Apparmor:拒绝“/”请求
【发布时间】:2014-12-21 13:53:15
【问题描述】:

我有一个 R 包,它通过 Rmpi​​ 包向我运行的 OpenMPI 集群发送作业。在从控制台运行的 R 会话中,一切都按预期工作。但是,当我尝试像这样从我的 OpenCPU 服务器执行相关功能时(更改了细节以保护无辜者):

curl -XPOST http://99.999.999.99/ocpu/library/MyPackage/R/my_cluster_function

我收到此错误:

R call failed: process died.

(包中的其他非集群调用函数通过 OpenCPU 按预期工作)。我在/var/log/kern.log 中注意到apparmor 发出的DENIED 的各种请求,我已经能够通过在/etc/apparmor.d/opencpu.d/custom 中添加条目来解决其中的大部分请求,以允许OpenMPI 访问它需要的文件。但是,我无法解决与位置"/" 的“打开”请求相关的这两个问题(同样,IP 地址已更改):

Oct 26 03:49:58 99.999.999.99 kernel: [142952.551234] type=1400 audit(1414295398.849:957): apparmor="DENIED" operation="open" profile="opencpu-main" name="/" pid=22486 comm="orted" requested_mask="r" denied_mask="r" fsuid=33 ouid=0
Oct 26 03:49:58 99.999.999.99 kernel: [142952.556422] type=1400 audit(1414295398.857:958): apparmor="DENIED" operation="open" profile="opencpu-main" name="/" pid=22485 comm="apache2" requested_mask="r" denied_mask="r" fsuid=33 ouid=0

将此添加到我的 apparmor 规则没有帮助:

/* r,

两个问题:

  1. 为什么 opencpu 试图从我的根目录读取数据(或者这是否意味着别的)?
  2. 更紧急的是,我该如何解决这个 apparmor 问题?

谢谢。

【问题讨论】:

  • 你试过规则/ r吗?在 apparmor 中,这与 /* r 不同。
  • 啊……那行得通。谢谢!如果你想把它变成一个答案,我会接受它。

标签: r mpi openmpi opencpu apparmor


【解决方案1】:

您可能需要添加两个 apparmor 规则

/ r,
/* r,

第一条规则允许列出/ 的目录,第二条规则允许读取/ 下的任何文件。

我不明白为什么 Rmpi 想要阅读 / 或者为什么你得到 process died 错误而不是访问被拒绝。您确定问题完全解决了吗?

【讨论】:

  • 不,不是,但是 kernel.log 中没有更多的 apparmor 否认,所以您解决了上面提出的问题 :)。我已将剩下的问题缩小到与内核中其他服务器的通信,我假设(部分基于对我服务器上其他登录的测试)失败,因为 opencpu 用户没有必要的 SSH 凭据。我正在研究如何配置它,但请随时将我推向正确的方向。
  • 我从未使用过mpi,所以我不确定它到底是做什么的。请注意,如果 R 代码依赖于线程或开放连接,OpenCPU 云服务器会分叉主 R 进程,这可能会导致问题。如果您遇到问题,请在 opencpu 邮件列表上发送电子邮件并附上一个小示例,也许我可以帮助调试。
猜你喜欢
  • 2012-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-14
  • 2018-11-30
  • 2014-09-30
  • 2014-12-10
相关资源
最近更新 更多