我可以使用“systemd-run --user”限制进程对文件系统的访问吗?

我可以使用“systemd-run --user”限制进程对文件系统的访问吗?

我正在寻找一种方法来运行具有有限权限和对文件系统的有限访问权限的进程。我希望用systemd-run它来做到这一点,当以 root 身份运行时效果非常好:

$ sudo systemd-run --pipe --quiet --wait -p ReadOnlyPaths=/ touch ~/nope
/usr/bin/touch: cannot touch '/home/me/nope': Read-only file system

不幸的是,相同的选项似乎不适用于--user模式:

$ systemd-run --user --pipe --quiet --wait -p ReadOnlyPaths=/ touch ~/nope
$ ls -al ~/nope
-rw-rw-r-- 1 me me 0 Nov  9 13:51 /home/me/nope

作为非 root(非 sudo)用户,我可以用来systemd-run运行具有有限权限、对文件系统的有限访问权限等的进程吗?如果是这样,怎么办?


笔记:

  • 我在网上看到提到需要非特权用户命名空间来实现 systemd 功能ProtectHome,但在我的机器上sysctl确实说kernel.unprivileged_userns_clone = 1,所以这似乎不是问题?

  • 遇到框架挑战时的一些背景:目前我有一行command="rsync --server --daemon ." … ssh-rsa …在 中说.ssh/authorized_keys,它限制使用特定密钥的登录只能运行rsync --server --daemon,如“通过远程 shell 连接使用 rsync 守护进程功能如果可能的话,我想限制rsync服务器上的结果进程只能修改某些文件夹。

    systemd-run我意识到还有其他方法可以专门针对 rsync 实现此目的,但我对有关的功能的一般答案感兴趣。

相关内容