例如,我想在用户之间重定向目录/数据。 当user1访问/数据时,它实际访问/ data1。 当user2访问/数据时,他实际访问/ data2。
我应该使用什么技术? cgroup的?的unionfs?其他?对不起,我是新手。
进程之间更高级的重定向。 process1将/ data1作为/ data访问, process2将/ data2作为/ data访问。 我怎么能这样做?
答案 0 :(得分:1)
有Linux filesystem namespaces可以做你想要的。您将在其中创建一个新的命名空间和mount / data,作为对real / data1或/ data2的绑定安装。
然而,据我所知,现在做这件事很棘手,并且需要很多Linux发行版可能没有使用的工具。
大多数Unix软件使用环境变量来查找其数据目录。在这样的事情上,你有
export JACKSPROGRAMDATA=/data1
在用户的$ HOME / .profile(或.bash_profile)中,jacksprogram将使用getenv(JACKSPROGRAMDATA)
来读取值。
答案 1 :(得分:0)
在Linux中,您可以使用 bind mounts 将目录或文件映射到另一个路径,并按进程 mount命名空间为特定进程执行此操作。
绑定是在-o bind
的{{1}}选项中实现的。可以采用Mount命名空间,例如使用属于mount
包的unshare
工具。
请参阅this answer中的示例。