前提條件:
兩個用戶(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>