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是没有权限的


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM