Назад | Перейти на главную страницу

Обновление группы без выхода из системы или подоболочки

Я пытаюсь запустить Docker в потоковом режиме Elastic MapReduce, но у меня возникли проблемы с разрешениями. В моем сценарии начальной загрузки мне нужно, чтобы пользователь «hadoop» входил в группу «docker» (как описано в Страница основ AWS Docker):

sudo usermod -a -G docker hadoop

но я не могу выйти из системы или создать подоболочку (с помощью newgrp). Есть ли способ заставить настройку группы вступить в силу в моем текущем сеансе оболочки?

Нет - если только hadoop процесс запущен как root, тогда вы можете сделать некоторые обман gdb изменить EUID, но не группу. Но думаю, в твоем случае это не поможет.

какой мог помощь в том, чтобы временно позволить hadoop доступ пользователей к файлам, предназначенным для docker группа для доступа.

Пример: hadoop пользователю необходим доступ на запись к /foo каталог, но только docker группа в настоящее время может написать это:

$ ls -ld /foo/
drwxrwx--- 2 root docker 4096 Mar 10 00:42 /foo/

Поддержка большинства файловых систем ACL В наше время:

$ sudo setfacl -m g:docker:rwx /foo

Сейчас hadoop пользователь сможет писать на /foo.

Я знаю, что вы не об этом спрашивали, но поскольку нет возможности изменить EGID запущенного процесса, возможно, это работает наоборот с помощью списков контроля доступа.

Мне потребовалось время, чтобы понять, как запустить Docker на Hadoop Streaming на EMR. Оказывается, что пользователь, выполняющий задание, yarn и нет hadoop. Таким образом, сценарий начальной загрузки должен содержать следующие строки:

sudo useradd -r yarn # create 'yarn' since it does not exist yet
sudo usermod -a -G docker yarn

Обратите внимание, что я вручную создаю yarn пользователь, потому что при запуске сценария начальной загрузки Hadoop еще не установлен