this post was submitted on 15 Apr 2024
656 points (95.3% liked)

linuxmemes

20688 readers
1396 users here now

I use Arch btw


Sister communities:

Community rules

  1. Follow the site-wide rules and code of conduct
  2. Be civil
  3. Post Linux-related content
  4. No recent reposts

Please report posts and comments that break these rules!

founded 1 year ago
MODERATORS
 
you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 2 points 4 months ago* (last edited 4 months ago)

Made a Nix library for this. For a simple setup you can just build this (untested) and run the result:

import ./encase.nix {
  name = "firefox";
  rw.home.nathan = /home/nathan/home-for/firefox;
  # other dependencies it might need...
  tmp = /tmp; # fresh tmpfs for this sandbox
  network = true;
  command = pkgs.firefox;
}

It doesn't have user isolation yet, so if it escapes the browser and the chroot (which doesn't have a /proc unless you set proc = /proc;, and runs in a PID namespace either way) your files are still at risk. However, this is still pretty secure, and you can run the script itself as a different user (it creates a new UID namespace so chrooting can be done without root).