Vous n'êtes pas identifié(e).
L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT →
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révision Les deux révisions suivantes | ||
doc:autres:vm:lxc:mode-utilisateur [23/12/2015 11:19] captnfab [Préparation] |
doc:autres:vm:lxc:mode-utilisateur [23/12/2015 12:44] captnfab [FAQ / Problèmes rencontrés] |
||
---|---|---|---|
Ligne 145: | Ligne 145: | ||
<code root>lxc-create -t debian -n test -- -d debian | <code root>lxc-create -t debian -n test -- -d debian | ||
mv /var/lib/lxc/test ~lxcuser-test/.local/share/lxc/ | mv /var/lib/lxc/test ~lxcuser-test/.local/share/lxc/ | ||
- | chown lxcuser-test ~lxcuser-test/.local/share/lxc/test{,/*} | + | chown lxcuser-test: ~lxcuser-test/.local/share/lxc/test{,/config,/fstab} |
find ~lxcuser-test/.local/share/lxc/test/rootfs/ -exec sh -c 'chown $(echo $(stat -c %u "{}")+624288 | bc):$(echo $(stat -c %g "{}")+624288 | bc) "{}"' \; | find ~lxcuser-test/.local/share/lxc/test/rootfs/ -exec sh -c 'chown $(echo $(stat -c %u "{}")+624288 | bc):$(echo $(stat -c %g "{}")+624288 | bc) "{}"' \; | ||
</code> | </code> | ||
En remplaçant 624288 par les numéro initiaux des plages de sous-uid/gid respectifs de votre user. | En remplaçant 624288 par les numéro initiaux des plages de sous-uid/gid respectifs de votre user. | ||
+ | |||
+ | ===== Configuration du conteneur ===== | ||
+ | |||
+ | Le fichier de configuration ''~/.local/share/lxc/test/config'' doit ressembler à ça : | ||
+ | <code ini ~/.local/share/lxc/test/config> | ||
+ | # For additional config options, please look at lxc.container.conf(5) | ||
+ | |||
+ | # Distribution configuration | ||
+ | lxc.include = /usr/share/lxc/config/debian.common.conf | ||
+ | lxc.include = /usr/share/lxc/config/debian.userns.conf | ||
+ | lxc.arch = x86_64 | ||
+ | |||
+ | lxc.autodev = 0 | ||
+ | |||
+ | # Container specific configuration | ||
+ | lxc.id_map = u 0 624288 65536 | ||
+ | lxc.id_map = g 0 624288 65536 | ||
+ | lxc.rootfs = /home/lxcuser-test/.local/share/lxc/test/rootfs | ||
+ | #lxc.mount = /home/lxcuser-test/.local/share/lxc/test/fstab | ||
+ | lxc.utsname = test | ||
+ | |||
+ | # Network configuration | ||
+ | lxc.network.type = veth | ||
+ | lxc.network.flags = up | ||
+ | lxc.network.link = lxcbr0 | ||
+ | #lxc.network.hwaddr = 00:16:3e:xx:xx:xx</code> | ||
+ | |||
+ | <note warning>Si vous avez utilisé la méthode « root » pour créer le conteneur, il vous faudra compléter votre fichier. | ||
+ | * Vérifier les ''lxc.id_map'' et le include de ''debian.userns.conf''. | ||
+ | * Les chemins ''lxc.rootfs'' et éventuellement ''lxc.mount'' doivent être les bons (si vous avez déplacé le dossier du conteneur dans votre home…) | ||
+ | * Les options ''lxc.network.''* doivent être cohérentes avec ce qui a été indiqué dans ''/etc/lxc/lxc-usernet'' : | ||
+ | <code>lxcuser-test veth lxcbr0 1</code> | ||
+ | </note> | ||
+ | |||
+ | Les droits des dossiers doivent ressembler à cela : | ||
+ | <code user>ls -lhd /home{,/lxcuser-test{,/.local{,/share{,/lxc{,/test}}}}}</code> | ||
+ | <code>drwxr-xr-x 5 root root 4,0K déc. 17 00:07 /home | ||
+ | drwxr-xr-x 3 lxcuser lxcuser 4,0K déc. 17 00:56 /home/lxcuser-test | ||
+ | drwxr-xr-x 3 lxcuser lxcuser 4,0K déc. 17 00:56 /home/lxcuser-test/.local | ||
+ | drwxr-xr-x 3 lxcuser lxcuser 4,0K déc. 19 13:49 /home/lxcuser-test/.local/share | ||
+ | drwxr-xr-x 3 lxcuser lxcuser 4,0K déc. 19 13:53 /home/lxcuser-test/.local/share/lxc | ||
+ | drwxrwx--x 3 lxcuser lxcuser 4,0K déc. 19 13:51 /home/lxcuser-test/.local/share/lxc/test</code> | ||
+ | (Le o+x est le point crucial ici.) | ||
+ | |||
+ | <code user>ls -lh /home/lxcuser-test/.local/share/lxc/test</code> | ||
+ | <code>total 8,0K | ||
+ | -rw-r--r-- 1 lxcuser lxcuser 488 déc. 19 13:51 config | ||
+ | -rw-r--r-- 1 lxcuser lxcuser 0 déc. 19 13:51 fstab | ||
+ | drwxr-xr-x 22 624288 624288 4,0K déc. 19 13:51 rootfs</code> | ||
+ | (Vérifier les propriétaires suivant ses propres sous-uid/sous-gid.) | ||
===== Utilisation du conteneur ===== | ===== Utilisation du conteneur ===== | ||
+ | <note warning>Ne vous loguez pas en tant que ''lxcuser-test'' via **su** ou **sudo**, la suite ne fonctionnera pas. Vous devez impérativement vous connecter via ''ssh'' ou directement sur un ''getty''. En effet, cgm et lxc-start s'appuient sur les sessions PAM, qui ne sont pas créées via su ou sudo… | ||
+ | </note> | ||
<code user>cgm movepid all $USER $$ | <code user>cgm movepid all $USER $$ | ||
lxc-start -n test -d</code> | lxc-start -n test -d</code> | ||
Ligne 158: | Ligne 210: | ||
Messages d'erreur rencontrés en lançant les différentes commandes du tuto, ou encore journalctl -xe | Messages d'erreur rencontrés en lançant les différentes commandes du tuto, ou encore journalctl -xe | ||
- | * ''lxc_container: Failed to chown /dev/pts/X'' | + | * ''lxc_container: Failed to chown /dev/pts/X'', ''lxc_start - start.c:lxc_init:445 - Failed to shift tty into container'' |
Vérifier que le paquet ''uidmap'' est bien installé | Vérifier que le paquet ''uidmap'' est bien installé | ||
Vérifier que ''/proc/sys/kernel/unprivileged_userns_clone'' et ''/sys/fs/cgroup/cpuset/cgroup.clone_children'' sont bien à ''1'' | Vérifier que ''/proc/sys/kernel/unprivileged_userns_clone'' et ''/sys/fs/cgroup/cpuset/cgroup.clone_children'' sont bien à ''1'' |