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

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

sudo usermod -a -G docker hadoop

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

1
задан 10 March 2016 в 06:29
2 ответа

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

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

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

Большинство файловых систем поддерживают ACLs в настоящее время:

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

Теперь пользователь hadoop сможет записать в /foo.

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

.
0
ответ дан 4 December 2019 в 10:53

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

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

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

-1
ответ дан 4 December 2019 в 10:53

Теги

Похожие вопросы