Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux上用户或进程之间的目录重新映射?_Linux_Kernel - Fatal编程技术网

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

Linux上用户或进程之间的目录重新映射?,linux,kernel,Linux,Kernel,例如,我想在用户之间重定向目录/数据。 当user1访问/data时,它实际上访问/data1。 当user2访问/data时,实际上他访问/data2 我应该使用什么技术?cGroup?工会?其他人?对不起,我是新手 更高级的是进程之间的重定向。 process1以/data的形式访问/data1, process2将/data2作为/data访问。 我该怎么做呢?有很多人可以做你想做的事。您将创建一个新的名称空间,并在其中装入/data作为与real/data1或/data2的绑定装入 然而

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

我应该使用什么技术?cGroup?工会?其他人?对不起,我是新手

更高级的是进程之间的重定向。 process1以/data的形式访问/data1, process2将/data2作为/data访问。 我该怎么做呢?

有很多人可以做你想做的事。您将创建一个新的名称空间,并在其中装入/data作为与real/data1或/data2的绑定装入

然而,据我所知,现在做这件事有点棘手,需要很多工具,而大多数Linux发行版可能没有使用这些工具

大多数Unix软件使用环境变量来查找其数据目录。在这种情况下,你会

export JACKSPROGRAMDATA=/data1
在用户的$HOME/.profile(或.bash_profile)中,jacksprogram将使用
getenv(JACKSPROGRAMDATA)
读取值。

在Linux中,您可以使用绑定装载将目录或文件映射到另一个路径,并使用每个进程装载名称空间为特定进程执行此操作

绑定装载在
装载
-o绑定
选项中实现。可以使用装载命名空间,例如使用
unshare
工具,该工具是
util-linux
包的一部分


请参阅中的示例。

对不起,/data只是这里的一个示例,它可能是一个重要的目录,在大多数情况下都是硬编码的applications@jackyyy:那么听起来您确实需要名称空间。事实上,使用它们并不太糟糕。但是让每个登录到他们自己的系统的用户设置挂载可能会很困难。