Vim 在没有权限的情况下写入文件

Al.*_*.G. 0 vim permissions files

$ ls sess.vim -lh              
-rw-r--r-- 1 root root 11K Feb 26 18:52 sess.vim
Run Code Online (Sandbox Code Playgroud)

我希望这个文件对每个人都是可读的,并且没有人可以写(root 除外)。因此,我将其权限设置为644,所有权设置为root:root

$ echo "text" >> sess.vim      
zsh: permission denied: sess.vim
Run Code Online (Sandbox Code Playgroud)

看起来不错。在 vim 中进行了一些更改后,我执行了:w!(强制写入)并成功保存了文件。现在:

$ ls sess.vim -lh
-rw-r--r-- 1 MY_USERNAME users 11K Feb 26 19:06 sess.vim
Run Code Online (Sandbox Code Playgroud)

Wt..为什么?如何?

jor*_*anm 6

使用 :w!在vim中类似如下:

echo 'test' > sess.vim.temp
mv sess.vim.temp sess.vim
Run Code Online (Sandbox Code Playgroud)

mv只关心目录的权限命令,文件的权限是不相关的。这是因为您正在修改目录,而不是写入文件。为了实现您的目标,您还需要调整文件所在目录的权限。