You want to find a way to remove the "open other programs" permission from the terminal. Or run it in a VM without internet connection.
post
Yet again a reminder that flathub solves a problem most people don't have, and most users het confused with what it does.
We have had granular permissions for users on systems for 50 years, and virtual machines for 30 years, yet people keep using the wrong tool for the job just because the wrong tools keep getting popilar for some damn reason.
OP you are using your flatpack terminal wrong, the processes it launches do not inherit the constraints, or at least are not forced to follow them. Use a separate user account for that.
firejail should be able to do this with a carefully crafted command line or config file.
I don't think flatseal isolates child processes, only the flatpak itself.
You could use firejail. That is available outside the AUR. As there is no socket available, if testing with a browser it should force the browser to crash. You could also try setting up a network namespace that only binds to loopback in case you want local device network access.
EDIT: I don't think you need to switch distros to solve this problem, but if you do you could try NixOS. Obviously there is no AUR, but you can write .nix config files to fine tune how firejail automatically works with specific applications:
programs.firejail = {
enable = true;
wrappedBinaries = {
firefox = {
executable = "${pkgs.firefox}/bin/firefox";
profile = "${pkgs.firejail}/etc/firejail/firefox.profile";
extraArgs = [
"--private-home=.mozilla"
"--whitelist=\${HOME}/Desktop/BrowserSandbox"
];
};
transmission-qt = {
executable = "${pkgs.transmission-qt}/bin/transmission-qt";
profile = "${pkgs.firejail}/etc/firejail/transmission-qt.profile";
extraArgs = [
"--net=none"
];
};
};
};
On NixOS why not use Nixpak? (which doesn't require SUID binaries)
That's honestly a fair point. Firejail is simpler to use, but is still imperatively driven. Nixpak relies on declarative expression which is kinda the whole selling point of NixOS. For SUID, again I think its a matter of complexity vs containment. One is easier, one is better isolated.
Firejail still might be the better choice in this given case, but that would depend on whether or not this is a per-user setup. Nixpak would win outright I would think outside that just based on reproducibility. I don't think the user shared details on why/who this would be for.
There is likely a less complicated way to do it but sudo to another user account and then run it with the protection. This way it can't reach your web browser. Or - I don't know if your program can do it, but Firejail certainly can - hide browser binaries and xdg-open from it, but I don't know how effective this will be against your particular script.
If you don't trust something maybe don't run it on your main OS?
portmaster can turn off internet for a specific app, but even better it can block specific domains
actually just putting the website domain (with local ip or something) into hosts file will be enough
You said you don't want the page to load. Do you even care if the browser opens?
What about overriding the default browser application that the terminal tries to use? Maybe there's some env variable to override the xdg browser default, and you could point it to a script that exits instantly.
all 11 comments