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)