Chapter 1. Introduction

Plash is a restricted execution environment for running Linux programs with minimum privileges necessary. It is similar to chroot jails, but more lightweight and flexible. Plash lets you grant a process read-only or read-write access to specific files and directories, which can be mapped at any point in the filesystem namespace.

Plash provides three interfaces:

The Plash execution environment doesn't require a modified Linux kernel -- it uses chroot() and UIDs. It works with existing Linux executables, provided they are dynamically linked, because Plash uses a modified version of GNU libc.

Plash virtualizes the filesystem. A process can request to open a file by sending a request via a socket. The server can send a file descriptor across the socket in response. Usually performance is not affected, because the most frequently used system calls (such as read() and write()) work on kernel-level file descriptors as before.