对不起,新手问题。我想知道,vim是如何设法写一个只读文件的。我对一个文本文件具有555权限。但是,当我打开并为其写一些东西时,它就会:w!,我对文件所做的更改已保存。我不知道vim是如何在后台执行此操作的!!就像将权限临时更改为755并写入并将其恢复为原来的权限一样吗?请指教。
编辑:我最初回答的是正确的,但最终没有关于UNIX权限如何工作的信息:这不是Vim在做什么。
的确,您是对的:当发出:w!
,并且在UNIX上时,如果需要,Vim会添加写许可权:
/* When using ":w!" and the file was read-only: make it writable */
if (forceit && perm >= 0 && !(perm & 0200) && st_old.st_uid == getuid()
&& vim_strchr(p_cpo, CPO_FWRITE) == NULL)
{
perm |= 0200;
(void)mch_setperm(fname, perm);
made_writable = TRUE;
}
然后将其重置回:
if (made_writable)
perm &= ~0200; /* reset 'w' bit for security reasons */
它也反映在帮助中:
注意:这可能会更改文件的权限和所有权,
并断开(符号)链接。将“ W”标志添加到“ cpoptions”可避免这种情况。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句