![如何限制 ecryptfs 对一组进程的访问](https://linux22.com/image/99969/%E5%A6%82%E4%BD%95%E9%99%90%E5%88%B6%20ecryptfs%20%E5%AF%B9%E4%B8%80%E7%BB%84%E8%BF%9B%E7%A8%8B%E7%9A%84%E8%AE%BF%E9%97%AE.png)
我想要一个执行以下操作的脚本:
- 使用 ecryptfs 挂载加密目录
- 设置权限,以便只有
bash
由它启动的 shell 以及从该 shell 继承的任何进程才能访问该目录。
如果需要,可以使用 sudo 运行该脚本,以便它具有执行安装和设置的权限。
我的想法是,我有一些受信任的程序,我想用它们来处理存储在加密目录中的数据。我希望保护数据免受系统上其他程序的影响。
但是,我希望受信任的程序能够正常访问我的主文件夹,并且它们在加密目录之外写入的文件可供任何应用程序使用。因此,以不同用户身份运行该程序似乎没有帮助。
到目前为止,我已经研究了 SELinux 和 cgroup。其中cgroups似乎更接近我想要的,因为它会自动继承权限。我想我可以设置两个 cgroup,“受信任”和“不受信任”,其中“不受信任”将是包含所有任务的默认值。但是,我发现有关如何使用 cgroup 限制文件访问的信息非常少,并且我不确定它是否真的可以按照我想要的方式进行。
所以,如何限制 ecryptfs 对一组进程的访问?
答案1
继相关问题,我找到了这个工具取消共享我以前不知道,但它正是我想要的。
以下脚本是我想出的:
mount_privately.sh:
#!/bin/bash
sudo unshare -m /bin/bash -c "mount -t ecryptfs $1 $2; su $USER; umount $2"
用法示例:
user@localhost:~$ ./mount_privately.sh backing_dir secure_dir
Passphrase: ...
user@localhost:~$ # secure_dir is now a
似乎不需要也可以实现这一点root
,但这对我来说已经足够好了。