如何保留从原始文件到符号链接的只读权限?

如何保留从原始文件到符号链接的只读权限?

我从目录 A 制作了一个副本文件,作为目录 B 中的符号链接,并且我只需要保留从原始文件到符号链接的读取权限。就像这个例子:原始文件有–rwx-wxr-x,链接应该有–r-----r--

我需要在linux中的代码C中执行此操作,而不是命令。我猜是与umask有关的东西,但我不知道它是怎么回事。

答案1

符号链接没有权限的概念,因此在传递符号链接时您无法强制执行与访问最终文件不同的权限。它们本质上只是存储指向其他文件的路径(或者不存储,因为符号链接可能会悬空)。

符号链接本身没有权限概念的原因是因为很难想出任何用例来这样做:如果可以取消引用符号链接并成功访问最终文件,他们也可以readlink在符号链接上使用 (2)并仅使用其原始权限读取最终文件。因此,最简单、最合理的答案是“你不能”。 :-)

如果您决定这样做,一种选择是使用 eBPF、ptrace 或类似的方法来拦截对该文件路径的调用并伪造一些权限(尽管您可能必须假装它不是符号链接,以避免在程序正确地从未预料到这是一个问题)。同样,如果您有符号链接,人们只会将其解析到最终目的地,所以我不确定您希望在这里实现什么。

相关内容