为什么要在Linux中更改符号链接的所有者?


12

在Linux中,可以更改符号链接(symlink)的所有者或组所有者。我想知道为什么有人要这样做,因为在通过符号链接访问文件时不使用符号链接的权限。

我只能想象一个有用的用例:允许用户删除具有粘性位的目录中的符号链接。

您是否知道其他情况下,更改符号链接的所有者或组所有者可能有用吗?

Answers:


6

假设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了符号链接。


“如果root可以运行chown -h bob foo来确保不遵循符号链接,那么最大的危害就是同一目录中的其他文件已更改为属于Eve。” 我猜你的意思是“ chown -h eve foo”。另一个文件可能会更改,这是符号链接,对吗?
user368507 2012年

@ user5528另一个文件可能不是符号链接:Eve仍然可以运行mv myfile foo,而root最终将更改的所有者myfile。但是myfile必须是Eve可以创建或移动到该目录的文件,它不能是系统上的任何文件。
吉尔(Gilles)“所以,别再邪恶了”

2
虽然很有趣,而且显然被问问者认可,但我看不出这个答案是如何解决这个问题的。似乎有更多的解释可以解释为什么chown -h在更改不应该是符号链接但仍然可以的文件所有权时,可以将其用作警告措施(一个极端的情况,IMO)。它没有解释为什么人们可能希望更改实际上旨在用作符号链接的文件的所有权,这就是问题所在。
伊凡X

为什么要chown更改“树外文件”的所有者,您要更改的只是目录的所有者?
Melab

@Melab当您更改目录树的所有者(即运行实用程序)时chown -R,它将(l)chown在每个目录条目上调用系统调用。如果目录条目是符号链接,则您不得chown在其上调用系统调用,因为这会影响可能位于树外部的链接目标。
吉尔斯(Gilles)'所以

8

仅当链接的所有者与目标的所有者匹配时,才能将Apache配置为遵循符号链接。这可以帮助防止用户创建链接以访问他们不拥有的文件(例如/ etc / passwd)以进行Web访问。

...所以假设您以root用户的身份希望 apache遵循链接以显示某个日志文件,该日志文件由xymon或其他任何人拥有,但是您不想通过允许apache跟随符号链接来放松其安全性,而不论所有者是谁。然后,您可能希望使xymon成为符号链接的所有者。


1
好。我知道这无关紧要,但是这种行为在apache中有什么意义呢?我的意思是,如果用户能够读取文件,为什么还要从Web访问中读取文件?thx
user368507 2012年

嗯,不仅是本地用户正在读取文件,还包括本地用户。如果apache可以阅读,那么每个人都可以阅读。并且,如果某个apache漏洞允许创建到的符号链接/etc/passwd,则该恶意者可能具有对该文件的读取访问权限,而没有任何其他本地访问权限-但是,apache拥有的符号链接会阻止该行为。
拉尔斯·罗尔巴赫

4

第一个答案似乎并没有解决这个问题,第二个答案仅适用于Apache。

我通常可以想到的一件事是,对于Linux,普通用户只有在用户是符号链接的所有者的情况下,才能对符号链接进行硬链接。我不知道为什么要建立这样的链接。

另一件事是,普通用户只能在拥有文件(并且也是要添加文件的组的成员)的情况下更改文件的组所有权。这提出了以下问题:一个符号链接。在组织中,用作指示哪个团队需要链接的标记可能有用。

另外,至少在Ubuntu上,任何人都可以更新符号链接的时间戳。但是,可能有些系统仅允许所有者使用。我不确定时间戳对符号链接有什么好处,但是它可能会提供一些有用的信息,说明使用了多少。

编辑:我刚刚意识到所有权重要的另一个原因。该链接可能位于粘性目录内,其中只有文件所有者才能删除或重命名该目录。


0

我有一个附加到日志文件的程序。这些日志文件每月创建一次,每个文件都有不同的名称。我没有使用软件来确定确切的文件名,而是使用“通用”文件名(例如data.log),该文件名是指向该月当前文件的符号链接。这是在cron作业上自动执行的。

现在,当创建新的每月文件时,它需要将符号链接指向新文件。如果存在所有权/组冲突,则该软件无法更改符号链接。因此,您需要所有权/组写特权才能更改符号链接。


0

如果要在打开的屏幕上链接到文件,则符号链接必须位于

“ / home /用户名/桌面”

目录。

并且,符号链接本身必须具有root:root(0:0)所有权,否则该链接将不起作用。

(Ubuntu / Debian等)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.