Rmpi, OpenCPU и Apparmor: запрос DENIED для /

У меня есть пакет R, который отправляет задание в кластер OpenMPI, который у меня запущен, с помощью пакета Rmpi. Все работает, как и ожидалось, в сеансе 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 множество запросов, DENIED отправляемых apparmor, и мне удалось разрешить большинство из них, добавив записи в /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. Более срочно, как я могу решить эту проблему с аппармором?

Спасибо.


person Eric    schedule 26.10.2014    source источник
comment
Вы пробовали правило / r? В apparmor это отличается от /* r.   -  person Jeroen    schedule 26.10.2014
comment
Ах... сработало. Спасибо! Если вы хотите превратить это в ответ, я приму это.   -  person Eric    schedule 26.10.2014


Ответы (1)


Возможно, вам потребуется добавить оба правила apparmor

/ r,
/* r,

Первое правило разрешает список каталогов /, а второе правило разрешает доступ для чтения к любому файлу под /.

Я не понимаю, почему Rmpi хочет прочитать / или почему вы получаете ошибку process died вместо отказа в доступе. Вы уверены, что проблема полностью решена?

person Jeroen    schedule 26.10.2014
comment
Нет, это не так, но в kernel.log больше нет отказов в apparmor, поэтому вы ответили на вопрос, заданный выше :). Я сузил оставшуюся проблему до связи с другими серверами в ядре, которая, как я предполагаю (частично на основе тестов с другими входами в систему на моем сервере), терпит неудачу, потому что у пользователя opencpu нет необходимых учетных данных SSH. Я изучаю, как это настроить, но не стесняйтесь подталкивать меня в правильном направлении. - person Eric; 26.10.2014
comment
Я никогда не использовал mpi, поэтому я не уверен, что именно он делает. Обратите внимание, что облачный сервер OpenCPU разветвляет основной процесс R, что может вызвать проблемы, если код R использует многопоточность или открытые соединения. Если вы застряли, отправьте электронное письмо в список рассылки opencpu с небольшим примером, и, возможно, я смогу помочь в отладке. - person Jeroen; 26.10.2014