Vim强制写入w!的分析

前提条件:

两个用户(arod和alex)的属性:均支持project组(附加组)

原文件(abcd)及目录(/srv/ahome)的详细属性和权限:abcd文件的所有者、所属用户组均是arod用户,/ahome目录对project组(arod、alex)开放rwx权限(使用者要修改一个文件至少需要该文件所在目录的x权限)

   

分析:

alex用户使用vim编辑abcd文件,会产生一个所有者、所属组均为执行者alex的.abcd.swp暂存文件(此时并未写入/保存编辑文件)

在vim的命令/末行模式下通过 :!ls -al 查看

当使用w!命令强制写入文件后,.abcd.swp暂存文件和原abcd文件的所有者、所属组均变成执行者alex

由于文件所在目录对project组(alex用户)开放w写入权限,alex用户可在该目录下新建文件、删除文件、修改文件名等操作。alex用户使用w!强制写入abcd文件,就相当于alex用户创建专属自己的新abcd文件覆盖掉原文件

再使用:q命令退出vim编辑后,.abcd.swp暂存文件被自动删除,只保留新的abcd文件

   

结论验证:

去掉/srv/ahome目录对组的w写入权限

   

使用arod用户编辑新abcd文件(新abcd文件的所有者、所属组均为alex用户)

在vim的命令模式下通过:!ls -al命令查看当前目录下的所有文件的详细信息

可知,此时并没有产生对应的.xxx.swp暂存文件(因为/ahome目录对project组(arod用户)没有开放w写入权限)

尝试通过:w命令强制写入,提示失败(还是因为没有w写入权限,也不存在.swp暂存文件来覆盖编辑文件)

此时,通过q!命令放弃对文本的修改强制退出,查看目录下的文件的详细信息,可知abcd文件并没有发生任何变化(arod用户无法对其写入、修改,只可读)

   

   

参考资料:

<http://bbs.chinaunix.net/thread-4139694-1-1.html>

<http://bbs.51cto.com/viewthread.php?tid=1155008&extra=&page=2>

posted @ 2018-03-26 17:09  DayoYan  阅读(3701)  评论(0编辑  收藏  举报