Draft: Contain rewrite

Closed Ron Williams requested to merge rw_van/contain:rw_van_231108 into master

This is a work in progress.

Contain can now handle multiple schemes. It can either do chroot on the file: scheme, or it can act as a filter, allowing access to only the schemes, directories and files that are named during startup. Most capabilities can be configured via command line.

There may be some overlap with the way relibc does canonicalization, but contain will also guard against improper use of symbolic links via direct syscall.

It is intended that we can use contain to guard against misuse of display: and pty: schemes, but I don't know enough about what should be allowed to complete that yet.

There is a mix of relibc, libredox and syscall interfaces. There seem to be some things missing from libredox, so that should be discussed once contain is closer to being ready.

Merge request reports