Vim強制寫入w!的分析


前提條件:

兩個用戶(arod和alex)的屬性:均支持project組(附加組)

原文件(abcd)及目錄(/srv/ahome)的詳細屬性和權限:abcd文件的所有者、所屬用戶組均是arod用戶,/ahome目錄對project組(arod、alex)開放rwx權限(使用者要修改一個文件至少需要該文件所在目錄的x權限)

   

分析:

alex用戶使用vim編輯abcd文件,會產生一個所有者、所屬組均為執行者alex的.abcd.swp暫存文件(此時並未寫入/保存編輯文件)

在vim的命令/末行模式下通過 :!ls -al 查看

當使用w!命令強制寫入文件后,.abcd.swp暫存文件和原abcd文件的所有者、所屬組均變成執行者alex

由於文件所在目錄對project組(alex用戶)開放w寫入權限,alex用戶可在該目錄下新建文件、刪除文件、修改文件名等操作。alex用戶使用w!強制寫入abcd文件,就相當於alex用戶創建專屬自己的新abcd文件覆蓋掉原文件

再使用:q命令退出vim編輯后,.abcd.swp暫存文件被自動刪除,只保留新的abcd文件

   

結論驗證:

去掉/srv/ahome目錄對組的w寫入權限

   

使用arod用戶編輯新abcd文件(新abcd文件的所有者、所屬組均為alex用戶)

在vim的命令模式下通過:!ls -al命令查看當前目錄下的所有文件的詳細信息

可知,此時並沒有產生對應的.xxx.swp暫存文件(因為/ahome目錄對project組(arod用戶)沒有開放w寫入權限)

嘗試通過:w命令強制寫入,提示失敗(還是因為沒有w寫入權限,也不存在.swp暫存文件來覆蓋編輯文件)

此時,通過q!命令放棄對文本的修改強制退出,查看目錄下的文件的詳細信息,可知abcd文件並沒有發生任何變化(arod用戶無法對其寫入、修改,只可讀)

   

   

參考資料:

<http://bbs.chinaunix.net/thread-4139694-1-1.html>

<http://bbs.51cto.com/viewthread.php?tid=1155008&extra=&page=2>


免責聲明!

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



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