Я создал нового пользователя на хост-машине (Ubuntu) с определенным uid и запустил контейнер с пользователем, который имеет тот же идентификатор пользователя.
Затем смонтировал папку, на которой у этого нового пользователя с таким идентификатором есть права доступа. Тем не менее, пользователь в контейнере с таким же идентификатором не имеет их, хотя я ожидаю, что у него есть разрешение.
Оказывается, пользователь хоста не входит в группы процесса докера (/ proc /...)?
Итак, нужно ли мне сообщать демону докера о новом пользователе? Перезагрузить демон докера? Перезагрузить systemctl? Что-то еще?
EDIT:
Итак, скажем, мой procId 12345, я делаю это:
cat /proc/12345/status
Я вижу это:
Name: process-inside-container
State: S (sleeping)
Tgid: 12345
Ngid: 0
Pid: 12345
PPid: 17847
TracerPid: 0
Uid: 20000 20000 20000 20000
Gid: 20000 20000 20000 20000
FDSize: 64
Groups: 145
NStgid: 12345 30
...
Таким образом, внутри и снаружи контейнера я создал пользователя и группу с идентификатором 20000. Но, как видно из параметров "groups", процесс распознал только старую группу с идентификатором 145. Моя группа хостов с идентификатором 20000 не была включена. Таким образом, я полагаю, что разрешения не могут быть общими.
Или я ошибаюсь, что это значит?
EDIT2: Когда я говорю, что я смонтировал папку, это через docker run -v /data/:/data/
.
Эта папка принадлежит на хосте пользователю и группе с идентификатором 20000, который является идентификатором, упомянутым ранее.
И по какой-то причине, несмотря на то, что пользователь и группа в контейнере имеют одинаковый идентификатор, у этого пользователя нет прав на редактирование папки.
EDIT3: я попытался ls
папка или touch
файл в ней, и я получил Permission Denied
.
В конечном итоге сработало изменение владельца родительской папки.