J'ai donc commencé par envoyer mes fichiers de façon classique avec sftp
, dans le home de mon utilisateur xakan
. J'ai monté le système de fichier du conteneur avec pct mount <id du conteneur>
, et simplement déplacé les fichiers avec mv <mondossier> /var/lib/lxc/<id>/rootfs/var/www/zdx
. Un petit lxc-attach <id du conteneur>
plus tard, me voici dans le dossier /var/www/
à vérifier les droits sur les fichiers avec ls -al
:
drwxr-xr-x 11 nobody nogroup 4096 Apr 24 19:20 zdx
Qu'à cela ne tienne, toujours depuis le conteneur, on met www-data:www-data comme propriétaires du dossier :
chown -R www-data: zdx
chown: changing ownership of 'zdx/terms/index.html': Operation not permitted
Ah. C'est même pas un accès refusé, c'est une opération non autorisée. lsattr
m'indique que l'attribut i n'est pas présent, ce n'est donc pas le problème.
En réalité, cela vient du fait que mon conteneur est un conteneur sans privilèges, sans correspondance entre l'utilisateur xakan
et les utilisateurs du conteneur. Le dossier est donc assigné à nobody
et nogroup
.
La solution consiste donc à aller chercher le pid du processus init
tel que vu par l'hôte. Il est bien entendu à 1 du côté du conteneur.
lxc-info -p 200
PID: 1204
Du côté de l'hôte, le processus init
de mon conteneur est donc 1024. Je peux à partir de là aller chercher l'uid de l'utilisateur qui exécute ce processus, toujours tel que vu depuis l'hôte :
cat /proc/1204/uid_map
0 100000 65536
De retour sur le conteneur après un nouvel lxc-attach 200
, je vérifie l'id de l'utilisateur www-data qui doit posséder le dossier :
id -u www-data
33
D'un point de vue hôte, l'utilisateur qui doit être propriétaire du dossier zdx a donc pour id 100000 + 33 (id de l'utilisateur depuis le conteneur). Il n'y a donc plus qu'à définir les droits depuis l'hôte, en passant par le montage du système de fichier :
chown -R 100033:100033 /var/lib/lxc/200/rootfs/var/www/public
On démonte le système de fichier du conteneur :
pct unmount 200
Et on va sur le conteneur vérifier que les droits sont bons, toujours avec ls -al
:
drwxr-xr-x 11 www-data www-data 4096 Apr 24 19:20 zdx
That's it!