Linuxでファイルシステムへのアクセス制限ができるlandlockのサンプルプログラムを試してみました。
詳細は https://qiita.com/nekoaddict/items/39125b8cd01da08b6a91 に詳しく書かれています。 Ubuntu22.04の5.15.0-84-genericでは https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/samples/landlock/sandboxer.c?id=81709f3dccacf4104a4bc2daa80bdd767a9c4c54のコードで動くことが分かりました。 このコードをローカルファイル sandboxer.c に保存して、gcc -o sandboxer sandboxer.cとすると、コンパイルができます。 例えば
LL_FS_RO="/usr:/etc:/home/username/.bashrc" LL_FS_RW="/dev/null" ./sandboxer bash -iのようにすれば、
- /usr
- /etc
- /home/username/.bashrc
- /dev/null
$ ls ls: ディレクトリ '.' を開くことが出来ません: 許可がありません $ ls /usr bin games include lib <以下省略> $ echo aaa > a bash: a: 許可がありません最新のカーネルではネットワークアクセスも制御できるようですが、Ubuntu22.04のデフォルトではできないようです。