1
|
Daniel Papasian · 技术社区 · 14 年前 |
![]() |
1
2
我认为安德鲁·麦格雷戈很可能是对的。不一定是不明飞行物 有 以这种方式工作,但是实现者(kirk mckusick)只是扩展了文件系统权限的逻辑来覆盖这种情况。因此,如果您对目标目录没有写权限,就不能更改其“.”项。 但在看你的例子时,我想到了另一种可能性。这可能不是像您所展示的那样,一个用户拥有所有相关目录的情况,而是一个目录由不同用户拥有的情况。换句话说,此检查阻止我在具有写权限的父目录之间移动您拥有的目录。当然,假设您没有在您的目录中授予我写权限。 诚然,在正常使用情况下,出现这种情况的可能性非常小。但是内核必须担心所有古怪的用例以及常见的用例。 一个明显的反论点是,如果我们想担心这种情况,那么我们还想阻止人们在他们有写权限的目录之间移动他们不拥有的文件… |
![]() |
2
0
换句话说,为了使目录在移动后格式良好,您必须更改..链接在里面,你没有权限这样做。所以这只是权限方案的一个逻辑部分,尽管这不是一个非常明显的部分。 |
![]() |
3
0
存在许多专门的程序,这些程序允许非特权用户在某些狭义的条件下执行某些通常具有特权的操作。此类程序通常使用setuid标志工作。在程序中,它检查以确保满足特殊条件,如果满足,则执行特权操作。 有时需要按名称引用文件,例如,如果要执行以文件名为参数的程序。如果必须首先执行检查,这可能导致危险的竞争条件,如果没有权限的用户可以在检查时间和使用时间之间重命名路径名的任何部分。有时,这可以通过要求包含每个指定路径组件的目录对未被授予权限的用户没有写权限来解决,确保在此期间未被授予权限的用户不能重命名(或取消链接并重新创建)路径组件以引用与检查了什么。如果没有权限的用户可以更改“.”所指的内容,即使没有该目录中的写入权限,也会造成安全漏洞。如果这是内核允许的特殊异常,则进行这种检查的每个程序都必须专门检查“.”组件以避免此问题。 此外,更新一个目录中的“.”需要写入该目录的数据块,并且还将更新该目录的最后修改时间,至少在传统的unix和bsd文件系统上是这样的(我知道这不是apple hfs+,其中“.”是合成的)。关闭其他用户的写权限似乎很直观,这将禁止他们对目录进行写操作或更改其上次修改的时间。 |
![]() |
Malay Joshi · C++如何创建文件夹 2 年前 |
![]() |
tashanzhishi061 · NFS装载显示有时会混淆 2 年前 |
![]() |
cryogene · mknod的可移植性[重复] 2 年前 |
![]() |
surajsbsm · 创建文件oustside默认目录php 6 年前 |
![]() |
Bob Kimani · 将存储库文件夹链接到另一个非repo文件夹 6 年前 |
![]() |
user3732361 · 读取大文件时如何选择块大小? 6 年前 |
|
YO LO · 在iPad上保存文本文件的位置 6 年前 |
![]() |
hhwwww · 无法在mac上显示扩展文件属性 7 年前 |