vi編輯器強制寫入wq!命令詳解


已知

這篇博文是在參考了[https://www.cnblogs.com/dayoyan/p/8652158.html]的基礎上展開的,贊一個

vi編輯器在編輯文件的過程中會在工作目錄新建一個.swp的交換文件,不可見。舉個例子,在vi vitest的時候,進入vi命令行鍵入! ls -al 會出現:
-rw------- 1 li li 12288 Mar 17 16:55 .vitest.swp
注意這個文件的全縣只有他需要的rw

下面我們來試驗一下,對於-r-----r-- 1 li root 35 Mar 17:45 vitest這個文件,強制寫入后結果是什么樣呢

分兩種情況:

  1. 當文件owner是vi命令執行者時(li),編輯一個沒有w權限的文件后執行wq!,ll顯示
    -r-----r-- 1 li root 35 Mar 17 16:57 vitest
    這表示:
    如果文件所有者是執行vi命令的執行者,雖然產生了swp文件,但最終wq!后還是原本的屬性不會變,只是mtime變了。

猜測vi內部可能先chmod再寫入《鳥哥linux私房菜》是這陽描述的,不過寫的很模糊誒。

  1. 當文件owner(root)不是vi命令執行者時(li),編輯一個沒有w權限的文件后執行wq!,ll顯示
    -r-----r-- 1 li li 41 Mar 17 17:11 vitest
    這表示:
    如果文件所有者不是執行vi命令的執行者,那么強制override的結果就是,通過swap文件,產生了所有者和用戶組都是執行者的新文件,並且屬性繼承源文件.

猜測vi內部將原文件刪除,然后將swap修改權限后,寫入了該目錄,因為這下chmod是沒有權限的


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM