mv 文件没有对源文件的写权限

Mr *_*ose 6 permissions directory rename rm files

我刚刚意识到我可以移动一个我不拥有且没有写权限的文件。我对该目录有写权限,所以我猜这就是我可以移动它的原因,但在这种情况下,是否有保护源文件的方法?

该文件的权限如下;

cgi-bin> ls -al 

drwxrwxrwx   3 voyager  endeavor     512 Feb  1 10:45 .
drwxrwxrwx   6 voyager  endeavor     512 Feb  1 09:38 ..
-rwxr-xr-x   1 voyager  endeavor   22374 Feb  1 10:45 webvoyage_link.cgi

cgi-bin> whoami
moorc

cgi-bin> groups
lrsn endeavor

cgi-bin> rm webvoyage_link.cgi
rm: webvoyage_link.cgi: override protection 755 (yes/no)? yes
Run Code Online (Sandbox Code Playgroud)

最后一个对我来说是一个很大的惊喜。如何删除我无权访问的文件。显然我遗漏了一些东西。

jw0*_*013 13

就权限而言,移动 ( mv) 本质上是一个保留属性的副本,然后是删除 ( rm)。1 取消链接或删除文件意味着从其包含目录中删除其目录条目。您正在写入目录,而不是文件本身,因此不需要对该文件的写权限。

大多数系统支持目录 ( chmod +t dir/)上粘滞位的语义,设置后仅允许文件所有者删除该目录中的文件。设置粘滞位cgi-bin/意味着moorc不能再取消链接cgi-bin属于voyager.

1 通常,当目标与源在同一文件系统中时,没有物理副本。相反,对目标目录中的文件建立了一个新链接,但同样的一般概念仍然认为文件本身不会改变。

如需更多阅读,请查看本文解释文件和目录权限(包括粘滞位)如何影响系统调用后记

我碰到了一个有趣的比喻在我真的很喜欢跑评论@JorgWMittag在这个网站的其他问题。

摘抄

它与实际的“真实”目录的工作方式相同,这就是为什么它被称为“目录”,而不是例如“文件夹”,后者的行为会大不相同。如果我想从我的电话簿中删除某人,我不会去她家杀了她,我只是拿笔在她的号码上划掉。IOW:我需要对目录的写访问权限,但不能访问她。

如果你试图扩展它,这个类比确实会有点不准确,因为没有有效的方法来描述这样一种情况:一旦指向它的目录条目的数量下降到零并且它的所有打开,文件系统实现就会自动释放文件的磁盘块手柄关闭。

  • 实际上,粘滞位用于指示在执行完成后不应从内存中清除的二进制文件,因为它们可能会被频繁使用。这就是 1976 年的情况。内核在某个地方进化,这已经过时了,但是有一点无所事事,chmod 命令已经知道如何设置它。 (3认同)