I don’t always install software whose idea of installation instructions is curl ... | sudo
, but when I do, I jail it. In this case, I’m setting up a chroot for Nodejs:
sudo apt install schroot debootstrap sudo mkdir /srv/npm-chroot sudo debootstrap stable /srv/npm-chroot sudo mkdir -p /srv/npm-chroot/home/joe/projects sudo chown -R joe:joe /srv/npm-chroot/home/joe/
In these examples, “joe” is my username.
The “s” in “schroot” stands for “securely,” but it might as well be “simple” because “schroot” handles fiddly bookkeeping tasks for setting up your environment, based on its config file.
Edit /etc/schroot/schroot.conf
:
[npm] description=npm projects type=directory directory=/srv/npm-chroot root-users=joe setup.fstab=joe-projects/fstab
Normally, schroot mounts /home
from the host as /home
in the chroot. I don’t want programs in jail to muck about with my home on the host though, so I edit the setup.fstab
option. Its default lives in /etc/schroot/default/fstab
.
For my purposes, the schroot’s default configuration is a good start, so:
sudo mkdir /etc/schroot/joe-projects sudo cp /etc/schroot/default/fstab /etc/schroot/joe-projects/
Edit /etc/schroot/joe-projects/fstab
, removing the /home
line and adding instead:
/home/joe/projects /home/joe/projects none rw,bind 0 0
Finally, enter the chroot, as root.
schroot -c npm -u root
I like to install sudo so it feels like a normal Ubuntu:
# now in the schroot apt update apt install sudo exit
Then log in as my normal user:
# in the host schroot -c npm
From here I can install npm in relative isolation; this is not sufficient for isolating malicious software, but it’s a nice way to avoid inconsiderate programs from pooping all over your system.
Brilliant guide, just a small note,
very first line
sudo apt install schroot debooTstrap (“t” was missing)
Thanks, fixed.