Mon problème
Sous mon installation Debian 10, impossible de démarrer des appimage sans avoir une erreur : The SUID sandbox helper binary was found, but is not configured correctly. Rather than run without sandboxing I'm aborting now.
J’ai par exemple ces applications qui utilisent Electron (Chrome) pour tourner en Sandbox :
- Discord
- Shadow
TL;DR
Sous Debian, démarrer une application en mode Sandbox nécessite les droits root. Pour donner ce droit à un utilisateur sans privilège, il faut modifier un réglage au niveau du noyau.
sudo sysctl -w kernel.unprivileged_userns_clone=1
Puis pour conserver ce réglage à chaque redémarrage
echo 'kernel.unprivileged_userns_clone=1' > /etc/sysctl.d/userns.conf
Une première solution – pas de sandbox
Une première solution, naïve, est de tout simplement ne pas exécuter en mode sandbox : app.appimage --no-sandbox
Mais c’est dommage de perdre l’intérêt des sandbox qui apportent un peu de sécurité à notre système. Après tout, qui sait ce que contient cette appimage ?
Une mauvaise solution – donner les accès root
Une très mauvaise idée (à mon sens) est de donner le setuid root à cette application :
sudo chown root:root app.appimage
sudo chmod S+u app.appimage
Mais bof, on lui donne les droits root, même si cela ne semble nécessaire que pour démarrer la sandbox
La bonne solution (?)
Dernière solution : autoriser la création de sandbox par des utilisateur sans privilège. En effet, c’est une option au niveau du noyau linux qui autorise ou non des utilisateurs sans privilège à ouvrir un environnement sandboxé.
Certaines distributions, comme Ubuntu, viennent avec ce réglage activé par défaut. Hors, sous ma Debian 10 ce n’est pas le cas. Mais cela se règle sans soucis avec un simple
sudo sysctl -w kernel.unprivileged_userns_clone=1
Puis pour conserver ce réglage à chaque redémarrage
echo 'kernel.unprivileged_userns_clone=1' > /etc/sysctl.d/userns.conf
J’ai personnellement choisi cette dernière solution, car elle me semble la plus sûre. Mais si je me trompe, que quelqu’un n’hésite pas à me faire part de ses arguments.
Sources
https://unix.stackexchange.com/questions/303213/how-to-enable-user-namespaces-in-the-kernel-for-unprivileged-unshare
https://www.reddit.com/r/linux/comments/dvb43s/til_electron_requires_setuid_root_to_operate/