Debian Debian-France Debian-Facile Debian-fr.org Debian-fr.xyz Debian ? Communautés

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 19-03-2021 20:18:53

cicxjo
Membre
Distrib. : Stable
(G)UI : Kde/Xfce/cwm
Inscription : 12-03-2021

[Résolu] Chroot Setuid + Pérennité du système de fichier hôte

Salut !

J'ai réalisé avec succès un chroot qui me permet de lancer des logiciels de manière transparente. C’est-à-dire que les logiciels chrootés peuvent accéder normalement à la caméra et au micro ainsi que diffuser du son normalement.

Contexte :
Test dans une machine virtuelle Qemu+Kvm, la caméra/micro étant une caméra USB.
Chaque utilisateur créé dans le chroot doit correspondre à un utilisateur du système hôte. Ainsi, les utilisateurs peuvent lancer les logiciels chrootés.

Dans l'immédiat, j'ai deux questions :
1. Pour permettre aux utilisateurs de lancer les logiciels chrootés, j'ai positionné le bit Setuid sur le binaire chroot. Existe-t-il un risque d'usage détourné qui puissent être dangereux ?
2. Est-ce que le montage du système de fichier tel que je l'ai effectué représente un risque pour la stabilité et la pérennité du système hôte ?


Voici les différentes étapes, du chroot jusqu'au lancement de Firefox :

* Variables :
Le nom d'utilisateur et l'UID sont ceux de l'utilisateur du système hôte.

chroot=/srv/chroot/debian
user=cicxjo
uid=1000



* Installation du système :

debootstrap --verbose --arch amd64 --include=locales,console-setup-linux,ncurses-term,bash-completion buster ${chroot}/ http://deb.debian.org/debian/



* Montage du système de fichier :

mkdir -p ${chroot}/run/user/${uid}

mount --bind /dev/             ${chroot}/dev/
mount --bind /dev/pts/         ${chroot}/dev/pts/
mount --bind /dev/shm/         ${chroot}/dev/shm/
mount --bind /home/            ${chroot}/home/
mount --bind /proc/            ${chroot}/proc/
mount --bind /run/             ${chroot}/run/
mount --bind /run/user/${uid}/ ${chroot}/run/user/${uid}/
mount --bind /sys/             ${chroot}/sys/
mount --bind /tmp/             ${chroot}/tmp/



* Sources.list :

echo | tee ${chroot}/etc/apt/sources.list
echo "deb http://deb.debian.org/debian/ buster main" | tee -a ${chroot}/etc/apt/sources.list
echo "deb http://security.debian.org/debian-security buster/updates main" | tee -a ${chroot}/etc/apt/sources.list
echo "deb http://deb.debian.org/debian/ buster-updates main" | tee -a ${chroot}/etc/apt/sources.list



* Nom du chroot :

echo "debian" | tee ${chroot}/etc/debian_chroot



* Configuration de la langue :

chroot ${chroot}/ dpkg-reconfigure locales



* Création de l'utilisateur :

chroot ${chroot}/ useradd -m -s /bin/bash ${user} -u ${uid}
chroot ${chroot}/ usermod -aG audio,video ${user}



* Installation de la bibliothèque Alsa :

chroot ${chroot}/ apt update
chroot ${chroot}/ apt install libasound2



* Correction des permissions :

chroot ${chroot}/ chmod 1777 /dev/shm/

chroot ${chroot}/ chown ${user}:${user} /run/user/${uid}/
chroot ${chroot}/ chmod 700 /run/user/${uid}/



* Bit setuid sur le binaire chroot :

chmod +s /usr/sbin/chroot



* Installation de Firefox :

chroot ${chroot}/ apt install firefox-esr firefox-esr-l10n-fr



* Lancement de Firefox :

/usr/sbin/chroot --userspec=${user}:${user} ${chroot}/ firefox-esr




À propos du montage et des permission de /dev/shm et /dev/user :
Il s'agissait de résoudre les messages d'erreurs retournés par les logiciels lancés.
Voici celles de Firefox :

[884, Main Thread] WARNING: failed to open shm: Permission non accordée: file /build/firefox-esr-YMT803/firefox-esr-78.8.0esr/ipc/chromium/src/base/shared_memory_posix.cc, line 246


(firefox-esr:2271): dconf-CRITICAL **: 22:37:51.692: unable to create directory '/run/user/1000/dconf': Permission non accordée.  dconf will not work properly.


J'ai calqué les permissions sur celle du système hôte.

Dernière modification par cicxjo (26-03-2021 23:23:59)

Hors ligne

#2 20-03-2021 18:00:41

raleur
Membre
Inscription : 03-10-2014

Re : [Résolu] Chroot Setuid + Pérennité du système de fichier hôte

cicxjo a écrit :

1. Pour permettre aux utilisateurs de lancer les logiciels chrootés, j'ai positionné le bit Setuid sur le binaire chroot. Existe-t-il un risque d'usage détourné qui puissent être dangereux ?


Evidemment.

cicxjo a écrit :

2. Est-ce que le montage du système de fichier tel que je l'ai effectué représente un risque pour la stabilité et la pérennité du système hôte ?


Il me semble avoir lu de possibles iconvénients au partage de /run avec un chroot, mais je ne me rappelle plus les détails.
A propos de /run, je ne vois pas l'intérêt du mkdir puisque le répertoire va être masqué par le montage de /run.
Et je ne vois pas l'intérêt de partager /tmp non plus.


Il vaut mieux montrer que raconter.

Hors ligne

#3 26-03-2021 23:23:03

cicxjo
Membre
Distrib. : Stable
(G)UI : Kde/Xfce/cwm
Inscription : 12-03-2021

Re : [Résolu] Chroot Setuid + Pérennité du système de fichier hôte

Merci pour ta réponse, raleur.

Je vais donc utiliser schroot qui règle, entre autre, ce problème.
Mais aurais-tu un exemple à me montrer d'usage détourné de chroot ?

À propos du mkdir, tu as raison, il est inutile. D'ailleurs, si je monte /run/user/${uid}/ après avoir créé l'utilisateur dans le chroot, ça règle le problème de permissions. Donc, plus de chmod/chown non plus.

Et en effet, le montage de /tmp n'a pas d'intérêt. Ni le chmod sur ${chroot}/dev/shm/ au passage.

Si je trouve (ou constate) quelque chose à propos du partage de /run, j'en ferai part ici.
À moins que tu aies noté autre chose qui te fasse tiquer, je marque le fil comme résolu. wink

Dernière modification par cicxjo (26-03-2021 23:33:23)

Hors ligne

Pied de page des forums