Applications appImage en mode sandbox

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/

Laisser un commentaire