Ich mache so was mit groups. Eine ist dann eine "no-internet"
Für diese "no-internet" Gruppe gibt es dann einen Eintrag in den iptables
-A OUTPUT -m owner --gid-owner <GROUP_ID> -j DROP
Den Benutzer, der das Programm verwenden soll das keine Internetverbindung haben soll, dann der "no-internet" Gruppe zuordnen. Und nun noch das kleine Startscript, das beim Start der jeweiligen Anwendung den Internetzugang entzieht:
#!/bin/bash
COMMAND="$1"
shift
for arg; do
COMMAND="$COMMAND \"$arg\""
done
sg no-internet "$COMMAND"
Das als /usr/bin/ni speichern und ausführbar machen. Das Programm das kein Internetzugang haben soll dann mit vorangestellten "ni" aufrufen. PDF-Reader wäre bei mir beispielsweise das Okular:
ni okular
Die Wirkung ist ähnlich wie Kätzchen es mit dem firejail beschreibt. Startet man den PDF-Reader mit "no-internet" Berechtigung und klickt auf einen Link, dann öffnet sich der Firefox, kann aber keine Verbindung aufbauen, da der Firefox dann die "no-internet" Berechtigung geerbt hat. Läuft hingegen der Firefox schon vorher ohne Beschränkung, öffnet sich die Webseite.
Einbauen lässt sich das "ni" dann auch direkt in die .desktop-Dateien welche die Programme starten.