Answers:
假设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
了符号链接。
mv myfile foo
,而root最终将更改的所有者myfile
。但是myfile
必须是Eve可以创建或移动到该目录的文件,它不能是系统上的任何文件。
chown -h
在更改不应该是符号链接但仍然可以的文件所有权时,可以将其用作警告措施(一个极端的情况,IMO)。它没有解释为什么人们可能希望更改实际上旨在用作符号链接的文件的所有权,这就是问题所在。
chown
更改“树外文件”的所有者,您要更改的只是目录的所有者?
chown -R
,它将(l)chown
在每个目录条目上调用系统调用。如果目录条目是符号链接,则您不得chown
在其上调用系统调用,因为这会影响可能位于树外部的链接目标。
仅当链接的所有者与目标的所有者匹配时,才能将Apache配置为遵循符号链接。这可以帮助防止用户创建链接以访问他们不拥有的文件(例如/ etc / passwd)以进行Web访问。
...所以假设您以root用户的身份希望 apache遵循链接以显示某个日志文件,该日志文件由xymon或其他任何人拥有,但是您不想通过允许apache跟随符号链接来放松其安全性,而不论所有者是谁。然后,您可能希望使xymon成为符号链接的所有者。
/etc/passwd
,则该恶意者可能具有对该文件的读取访问权限,而没有任何其他本地访问权限-但是,apache拥有的符号链接会阻止该行为。
第一个答案似乎并没有解决这个问题,第二个答案仅适用于Apache。
我通常可以想到的一件事是,对于Linux,普通用户只有在用户是符号链接的所有者的情况下,才能对符号链接进行硬链接。我不知道为什么要建立这样的链接。
另一件事是,普通用户只能在拥有文件(并且也是要添加文件的组的成员)的情况下更改文件的组所有权。这提出了以下问题:一个符号链接。在组织中,用作指示哪个团队需要链接的标记可能有用。
另外,至少在Ubuntu上,任何人都可以更新符号链接的时间戳。但是,可能有些系统仅允许所有者使用。我不确定时间戳对符号链接有什么好处,但是它可能会提供一些有用的信息,说明使用了多少。
编辑:我刚刚意识到所有权重要的另一个原因。该链接可能位于粘性目录内,其中只有文件所有者才能删除或重命名该目录。