Linux上的用户或进程之间的目录重新映射?

时间:2015-07-20 23:23:14

标签: linux kernel

例如,我想在用户之间重定向目录/数据。 当user1访问/数据时,它实际访问/ data1。 当user2访问/数据时,他实际访问/ data2。

我应该使用什么技术? cgroup的?的unionfs?其他?对不起,我是新手。

进程之间更高级的重定向。 process1将/ data1作为/ data访问, process2将/ data2作为/ data访问。 我怎么能这样做?

2 个答案:

答案 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中的示例。