vi编辑器强制写入wq!命令详解

已知

这篇博文是在参考了[https://www.cnblogs.com/dayoyan/p/8652158.html]的基础上展开的,赞一个

vi编辑器在编辑文件的过程中会在工作目录新建一个.swp的交换文件,不可见。举个例子,在vi vitest的时候,进入vi命令行键入! ls -al 会出现:
-rw------- 1 li li 12288 Mar 17 16:55 .vitest.swp
注意这个文件的全县只有他需要的rw

下面我们来试验一下,对于-r-----r-- 1 li root 35 Mar 17:45 vitest这个文件,强制写入后结果是什么样呢

分两种情况:

  1. 当文件owner是vi命令执行者时(li),编辑一个没有w权限的文件后执行wq!,ll显示
    -r-----r-- 1 li root 35 Mar 17 16:57 vitest
    这表示:
    如果文件所有者是执行vi命令的执行者,虽然产生了swp文件,但最终wq!后还是原本的属性不会变,只是mtime变了。

猜测vi内部可能先chmod再写入《鸟哥linux私房菜》是这阳描述的,不过写的很模糊诶。

  1. 当文件owner(root)不是vi命令执行者时(li),编辑一个没有w权限的文件后执行wq!,ll显示
    -r-----r-- 1 li li 41 Mar 17 17:11 vitest
    这表示:
    如果文件所有者不是执行vi命令的执行者,那么强制override的结果就是,通过swap文件,产生了所有者和用户组都是执行者的新文件,并且属性继承源文件.

猜测vi内部将原文件删除,然后将swap修改权限后,写入了该目录,因为这下chmod是没有权限的

posted @ 2020-03-17 18:01  Bravo_Jack  阅读(2671)  评论(0编辑  收藏  举报