В документации 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.