在 Linux 中,可以更改符号链接 (symlink) 的所有者或组所有者。我想知道为什么有人想要这样做,因为通过符号链接访问文件时不使用符号链接的权限。
我只能想象它可能有用的一个用例:允许用户使用粘性位删除目录中的符号链接。
您是否知道更改符号链接的所有者或组所有者可能有用的其他情况?
答案1
仅当链接的所有者与目标的所有者匹配时,Apache 才能配置为遵循符号链接。这可以帮助防止用户创建链接以通过网络访问不属于他们的文件(例如/etc/passwd)。
...所以假设你作为 root,通缉apache 跟随一个链接来显示某个日志文件,该日志文件由 xymon 或其他东西拥有,但您不想通过允许它跟随符号链接而放松 apache 的安全性,而不管所有者是谁。然后您可能想让 xymon 成为符号链接的所有者。
答案2
假设 root 正在 Eve 可以写入的目录中工作。该目录中有一个文件foo
需要更改为属于 Eve。所以根类型chown eve foo
。但就在 root 按 Enter 之前,Eve 运行了ln -sf /etc/passwd foo
。现在/etc/passwd
属于夏娃了!如果 root 可以运行chown -h eve foo
以确保不遵循符号链接,那么最大的危害就是同一目录中的其他一些文件已被更改为属于 Eve。
lchown
当您更改目录树的所有者时也很方便。您无需担心意外影响树外部的文件,因为您调用了chown
符号链接。
答案3
第一个答案似乎没有解决这个问题,第二个答案仅适用于 Apache。
对于 Linux,我能想到的一件事是,只有当用户是符号链接的所有者时,普通用户才有可能建立到符号链接的硬链接。我不知道为什么有人想要建立这样一个链接。
另一件事是,普通用户只有在拥有该文件(并且也是该文件要添加到的组的成员)的情况下才能更改该文件的组所有权。这就提出了一个问题:该文件的组所有权是什么?符号链接可以。在组织中,它可能用作指示哪个团队需要该链接的标签。
此外,至少在 Ubuntu 上,任何人都可以更新符号链接的时间戳。然而,有些系统可能只允许所有者这样做。我不确定时间戳对于符号链接有什么好处,但它可能会提供一些有关其使用量的有用信息。
编辑:我刚刚意识到所有权很重要的另一个原因。该链接可能位于粘性目录内,其中只有文件的所有者才能删除或重命名它。
答案4
我有一个附加到日志文件的程序。这些日志文件每月创建一次,每个文件都有不同的名称。我没有让软件找出确切的文件名,而是使用“通用”文件名(例如 data.log),它是指向该月当前文件的符号链接。这是通过 cron 作业自动完成的。
现在,当创建新的每月文件时,需要将符号链接指向新文件。如果存在所有权/组冲突,软件无法更改符号链接。因此,您需要所有权/组写入权限才能更改符号链接。