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

Почему LXC требует перезагрузки?

В документации LXC говорится:

Непосредственно перед созданием своего первого контейнера вам, вероятно, следует выйти из системы и снова войти в систему или даже перезагрузить компьютер, чтобы убедиться, что ваш пользователь находится в правильных контрольных группах.

Может кто-нибудь объяснить, почему это необходимо для запуска чего-то вроде:

lxc-usernsexec -m b:0:100000:1 -- bash

У меня есть правильные сопоставления в /etc/subgid и /etc/subuid. Но эта команда просто говорит, что разрешение отклонено, прежде чем я перезагружусь. Что значит правые контрольные группы означает?

РЕДАКТИРОВАТЬ

Перед установкой LXC:

jml@somehost:~$ cat /proc/self/cgroup 
2:name=systemd:/user/1002.user/123.session

После установки LXC и перезагрузки:

jml@somehost:~$ cat /proc/self/cgroup 
11:hugetlb:/user/1002.user/5.session
10:perf_event:/user/1002.user/5.session
9:blkio:/user/1002.user/5.session
8:freezer:/user/1002.user/5.session
7:devices:/user/1002.user/5.session
6:memory:/user/1002.user/5.session
5:cpuacct:/user/1002.user/5.session
4:cpu:/user/1002.user/5.session
3:cpuset:/user/1002.user/5.session
2:name=systemd:/user/1002.user/5.session

Обратите внимание, что нет никакой разницы в группах, к которым я принадлежу. Единственное изменение, которое я заметил, это те cgroups. Теперь имея те cgroups влияет на возможность отображать пользователя в пространстве имен?

Идентификаторы групп (GID) наследуются от родительского процесса. Когда вы входите в систему, вы получаете терминал, запускаемый с набором GID, и каждый запускаемый процесс получает одни и те же GID. По соображениям безопасности вы не можете самостоятельно изменить GID, и любые изменения не вступят в силу, пока вы не выйдете из системы и не войдете в систему, поэтому login процесс запускает ваш терминал с новыми GID.