我想当不同的用户访问相同的文件路径时访问不同的文件。
例如/path/a.txt
linux中有一个文件路径,如果user1访问/path/a.txt
它实际上访问的是/user1/a.txt
;如果 user2 访问/path/a.txt
它实际上访问/user2/a.txt
任何帮助深表感谢。谢谢 !
答案1
我突然想到了 4 种方法来做到这一点,但我不会推荐其中任何一种!
使用 Linux 命名空间;在每个每用户命名空间内,将每用户文件绑定安装到基本文件的顶部。
使用符号链接到目标文件的基本文件创建每用户 chroot 环境
运行基于 FUSE 的文件系统并将其安装在基本文件的顶部
让基本文件成为一个命名管道,并带有一个处理每个用户文件读/写的守护进程。
但全部其中的设置很复杂脆弱的我不会推荐他们。我不会更深入地讨论如何实现它,因为如果你无法构建它,那么你将无法修复它什么时候它坏了!
一般来说,您应该在代码中以另一种方式解决问题(例如使用环境变量)。
答案2
使用变量来实现目标。假设您使用 bash,那么对于 user1,在 ~/.bashprofile 中定义一个变量,例如 cpath
cpath=custom/path1
访问文件就像
"/some/path/$cpath/filename" # Quotes important to prevent word splitting
对于 user2,定义一个变量,例如
cpath=custom/path2
访问文件就像
"/some/path/$cpath/filename" #note the same path