我正在寻找一种方法来运行具有有限权限和对文件系统的有限访问权限的进程。我希望用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 实现此目的,但我对有关的功能的一般答案感兴趣。