根据用户 ID 的符号链接

根据用户 ID 的符号链接

我想知道如何在 Linux 中创建类似符号链接的东西,它将指向不同的目录,供不同的用户查看。我搜索了很长时间,找到了一个叫做 hlfsd 的东西 - 当然,常见的符号链接不能做到这一点,因为它们基于内核“东西”,但我已经发现了一些东西这也许能解决这个问题。

但是,有没有“更好”的解决方案——任何可以给我类似链接的文件,并根据 fe 用户的 id 指向不同目录的东西?

基本上我想做的是:

假设我们的服务器包含A/{a1 a2}/{b1 b2}/{c1 c2} 这些文件夹中的文件结构,这些文件夹中包含大文件,不应通过网络复制。假设用户 U1 想要访问这些文件,那么他可以创建符号链接(到目前为止一切顺利)。

问题是,当他想要访问这个结构时,他只想在本地复制A/a1/b1/c1。当然,我们可以在本地创建许多符号链接,指向服务器上的那些文件夹,但是我们没有一个对我来说非常重要的功能——当某人例如添加文件夹时A/a1/b1/c3,那么链接到此文件结构并A/a1/b1/c1在本地拥有的这个用户将看不到更改,因为他的所有链接都是手动创建的。

答案1

FreeBSD 曾经有一些特殊的符号链接处理,我认为称为可变符号链接(虽然在 Google 上搜索该术语没有找到我想要的)。这个想法是你不将符号链接到特定路径,而是链接到可以替换的字符串。

您不仅因为 Linux 不支持此功能而陷入困境,而且实现每个用户的东西比您想象的要困难。在 *BSD 中,它被设计为对内核知道的简单字符串进行符号链接,例如体系结构(即 i686 与 x86_64)。然后来自 /opt/someapp/bin => /opt/someapp/${arch}/bin 的符号链接是有意义的。但您想按用户执行。请记住,符号链接是在内核中解析的,内核不知道您的姓名或主目录。它知道您的用户 ID,仅此而已。它必须来回跳转到用户模式才能获取有关您的任何信息。这并非不可能,但非常棘手。那么,setuid 程序将如何工作?

简而言之,我知道你的意思,知道你想要什么,但你不太可能实现。也许看看保险丝 看看他们是否有你可以用的东西。

和您说的不太一样,但也许您可以使用源代码控制来实现这一点。ClearCase(付费软件)曾经有一个内核模块,可以完成您想要的大部分工作,不确定现在是否还能做到。即使没有内核文件系统模块,您也可以将分布式源代码控制功能整合到您想要的 60-70% 的工作中。

答案2

我看到的简单解决方案是,每个文件夹中都有一个隐藏文件夹.realfiles,其中包含真实文件夹和服务器上的文件夹,例如A/a1A/a1/b2指向 A 上方文件夹的符号链接,因此A/a1是符号链接../MOUNT/.realfiles/a1,并且A/a1/b2是指向 ../MOUNT/.realfiles/a1/.realfiles/b1 的符号链接。

现在基本上服务器上的 MOUNT 是指向 A 的符号链接,但如果可以更改每个用户的链接,即每个用户的 MOUNT 文件夹将指向另一个目录,那么我们将能够根据需要更改一些链接。

(我知道这种特殊情况,但我尽力解释清楚了)

相关内容