跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 请教,为什么 vim 的强制保存这么厉害?
未分類
14 10 月 2020

请教,为什么 vim 的强制保存这么厉害?

请教,为什么 vim 的强制保存这么厉害?

資深大佬 : jzq526 0

无意中发现的一个问题,在 centos7 和 debian 系统上都出现了,应该不是发行版的问题。 先在普通用户主目录下创建一个文件 f1:touch f1 查看其属性:

ls -l  -rw-r--r-- 1 vk vk  26 10 月 13 11:37 f1  

然后修改文件 f1 的所有者和所属组:

sudo chown root:root f1  ls -l  -rw-r--r-- 1 root root   0 10 月 13 11:36 f1  

在 vk 用户下编辑:vim f1 写入一些内容之后,直接 :w是无法保存的,提示不能写入只读文件。但可以用:w!保存,保存后所有者和所属组就回到了 用户 vk 和 组 vk 。

(但在其他目录下就不行了)

vim 的强制保存这么厉害吗?还是 Linux 对主目录有什么特殊设置?

大佬有話說 (9)

  • 資深大佬 : whenov

    :w[rite]! [++opt] Like “:write”, but forcefully write when ‘readonly’ is
    set or there is another reason why writing was
    refused.
    Note: This may change the permission and ownership of
    the file and break (symbolic) links. Add the ‘W’ flag
    to ‘cpoptions’ to avoid this.

  • 資深大佬 : NeezerGu

    我以前也不知道,不过我在 mac 下试了下。 换了个思路,在 chown 到 root 之后,不带 sudo 直接 chown 回来是不行的,但我可以删除它,相对于其他自己名下的文件,只是多了个是否确定而已。

    那么,vim 自然可以进行,先删除后重新创建并写入的操作(当然可能有更好的解决方案,我只是描述了这并不是只有 vim 可以实现)

  • 資深大佬 : xuboying

    vim 应该是删了这个文件重新写了一个。这个文件普通用户是可以删掉的。

  • 資深大佬 : xuboying

    @xuboying 想要证明的话应该有很多办法,比如 ls -li 看文件的实体 node 号是否发生了变化

  • 主 資深大佬 : jzq526

    @NeezerGu 删除权限应该是来自于用户对自己的主目录的操作权限,而不是对这个文件的操作权限。用户对自己的主目录有完全控制权,那么对其下的文件也就可以删除,这是文件权限不能决定的。

  • 資深大佬 : NeezerGu

    @jzq526 vim 就利用这个权限删除再重新创建不就好了?

  • 主 資深大佬 : jzq526

    @xuboying 我用 stat 命令查看了 inode 号,没有发生变化

  • 資深大佬 : VoldikSS

    确实是删除之后重新创建了: https://github.com/neovim/neovim/blob/master/src/nvim/fileio.c#L3165-L3167

    而且用 `stat` 命令查看时,文件的创建时间也发生了改变

  • 主 資深大佬 : jzq526

    @VoldikSS 我刚才试了一下,时间确实变了。但我又创建了一个文件,没有改变所有者等属性,保存后,它的时间也变了,而且是三个时间都变了。也就是说,不管是不是强制保存,文件的三个时间属性都会发生改变

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具