硬链接创建-权限?


17

哪些权限会​​影响硬链接的创建?文件所有权本身重要吗?


假设用户alicetarget.txt在目录中创建到文件的硬链接target-dir

  • 和都alice需要哪些权限?target.txttarget-dir
  • 如果target.txt是由用户拥有billtarget-dir被用户所拥有chad,它改变什么?

我试图模拟这种情况,在ext4文件系统中创建以下文件夹/文件结构:

#> ls -lh . *
.:
drwxr-xr-x 2 bill bill 60 Oct  1 11:29 source-dir
drwxrwxrwx 2 chad chad 60 Oct  1 11:40 target-dir

source-dir:
-r--r--r-- 1 bill bill 0 Oct  1 11:29 target.txt

target-dir:
-rw-rw-r-- 1 alice alice 0 Oct  1 11:40 dummy

虽然alice可以创建到的软链接target.txt,但她不能创建硬链接:

#> ln source-dir/target.txt target-dir/
ln: failed to create hard link ‘target-dir/target.txt’ => ‘source-dir/target.txt’: Operation not permitted

如果alice拥有target.txt且未更改任何权限,则硬链接成功。我在这里想念什么?


这是作业吗?如果可能的话,这可能会影响某些人会选择给出的答案的种类(并不是要问有关课程分配的问题是不合理的)。无论如何,您是否尝试过创建该场景并查看会发生什么?
埃里克·雷诺夫

不,这不是分配任务。我正在面对这种确切的情况,并且有一些猜测,但是我认为从理论的角度出发最好。就我而言,除非我是root 用户,否则无论target.txttarget-dir权限我都无法创建硬链接sudo
gcscaglia 2015年

硬链接共享相同的所有权和权限,因此与访问原始文件相同。
teppic 2015年

@teppic我的难点不是访问创建的硬链接,而是创建硬链接alice。我既可以访问原始文件,也可以访问到该文件的硬链接(使用创建sudo),但是我无法创建该链接用户alice虽然大家都同意这些权限应该是足够了。
gcscaglia

Answers:


19

要创建硬链接,alice将需要在所有情况下都具有write+execute权限target-dir。所需的权限target.txt将有所不同:

  • 如果这样,fs.protected_hardlinks = 1alice需要它的所有权target.txt或至少对其具有read+write权限。
  • 如果fs.protected_hardlinks = 0有的话,任何权限都可以;甚至000也可以。

这个类似问题的答案缺少回答此问题的信息。

http://kernel.opensuse.org/cgit/kernel/commit/?id=800179c9b8a1 [强调我的]:

硬链接:

在用户可写目录与系统文件位于同一分区的系统上,长期存在的安全性问题是基于硬链接的检查时间的使用竞赛,这在世界可写目录中最常见像/ tmp。利用此缺陷的常用方法是在遵循给定的硬链接时(即,根进程遵循由另一个用户创建的硬链接)跨越特权边界。此外,存在一个问题,用户可以“固定”潜在的易受攻击的setuid / setgid文件,从而使管理员实际上无法完全升级系统。

解决方案是仅在用户已经是现有文件的所有者时,或者如果他们已经对现有文件具有读/写访问权限,才可以创建硬链接


谢谢!这就是我在Debian 9上努力的一天!
阿达(Arda)

即使目录上有rwx权限,文件上有rw权限,为什么我仍会得到“不允许的操作”?
迈克尔

1

alice至少需要读取权限target.txt和的写入+执行权限target-dir

现在,权限结构就像一个三重分隔的集合:

  1. 用户权限:适用于拥有该节点的用户
  2. 组权限:适用于属于拥有该节点的组的任何用户。
  3. 其他人的权限:适用于不拥有该节点的任何其他用户/组

因此,所有权问题仅影响所需权限所在的一组权限alice

  • 如果alice是所有者用户,则必需的权限必须在“用户”部分中。
  • 如果alice是拥有它的组的一部分,则必需的权限必须在“组”部分中。
  • 如果alice不拥有它,并且不属于它的组,则必需的权限必须在“其他”部分中。

我也这么认为。但是在我的情况下,它target.txt具有444许可权和target-dir777许可权,但除非以root用户身份或拥有要链接的文件的所有权,否则我将无法创建硬链接。奇怪的是,链接将按照您的描述工作。
gcscaglia 2015年

该信息对于问题本身很有用,我建议您进行更新。奇怪的是,我之前从未想到过……但是,您正在工作的文件系统是否从一开始就支持类似Unix的所有权/权限?
dave_alcarin

是的,它是fedora 21系统上的现成的ext4;当我是文件的所有者时,该链接确实起作用。
gcscaglia 2015年
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.