见证以下内容:
sh-3.2$ mkdir testcase
sh-3.2$ cd testcase
sh-3.2$ sudo touch temp
sh-3.2$ ls -al
total 0
drwxr-xr-x 3 glen staff 102 19 Dec 12:38 .
drwxr-xr-x 12 glen staff 408 19 Dec 12:38 ..
-rw-r--r-- 1 root staff 0 19 Dec 12:38 temp
sh-3.2$ echo nope > temp
sh: temp: Permission denied
sh-3.2$ vim temp
# inside vim
itheivery
# press [ESC]
:wq!
# vim exits
sh-3.2$ ls -al
total 8
drwxr-xr-x 3 glen staff 102 19 Dec 12:38 .
drwxr-xr-x 12 glen staff 408 19 Dec 12:38 ..
-rw-r--r-- 1 glen staff 7 19 Dec 12:38 temp
vim以某种方式获取了该根目录拥有的文件,并将其更改为用户拥有的文件!
这似乎仅在用户拥有目录的情况下有效-但仍然感觉它不可能。谁能解释这是怎么做的?
ls -il
在...之前和之后运行来验证此情况是否发生。如果temp
的inode编号已更改,则说明它是具有相同名称的另一个文件。