Linux

使用者可以使用 vim 編輯文件

  • June 27, 2018

我有一個以目錄file.txt中的一些內容命名的文件/home/myuser,我將該文件的權限更改為root.rootand 644

-rw-r--r-- 1 root root 1.4K Jan 15 07:09 file.txt

然後我切換到並用(不帶 sudomyuser )打開它並嘗試編輯並保存它,我得到如下輸出:vim``:wq!

"file.txt" E949: File changed while writing
Press ENTER or type command to continue

然後我按輸入,然後再按一次:wq!,輸出是:

WARNING: The file has been changed since reading it!!!
Do you really want to write to it (y/n)?

我點擊y,文件被保存並退出vim

問題是為什麼順便改變了具有使用者ROOT權限和訪問權限的文件?read-only

PS:1.myuser是sudo使用者。

  1. 保存文件後的使用者權限也更改myuser.myuser為。

-rw-r--r-- 1 myuser myuser 1.4K Jun 27 18:57 file.txt

由於該文件位於使用者可寫的目錄中,因此使用者有權刪除和重新創建該文件。這或多或少是vim當您強制寫入文件時所做的。

$ ls -li file
3481899 -r--r--r--  1 root  wheel  6 Jun 27 15:48 file

$ vim file

$ ls -li file
3481905 -rw-r--r--  1 myself  myself  6 Jun 27 15:49 file

正如您在此範例中看到的,該文件已重新創建並具有新的 inode 編號。使用者和組已設置為寫入文件的使用者,權限已根據使用者的umask.

引用自:https://unix.stackexchange.com/questions/452220