linux刪除不了文件, 修改文件屬性也刪除不了的一個解決思路


場景:

  公司要求卸載軟件時, 也包含卸載一個目錄下的所有文件. 於是去修改刪除文件的shell腳本, 添加了刪除文件及文件夾的命令(當然是在root權限下的)

  如: rm -rf /home/vito/****

  但發現運行shell腳本時, 死活刪除不了那個目錄下的文件, 當然也就刪除不了目錄, 同時提示----rm: cannot remove '/home/vito/****/xxx.xxx': Permission denied.

  在網上查了一下, 說這種情況下, 一般都是該文件被設置了一些不可刪除的屬性, 如圖:

  

  可以通過命令lsattr filename, 查看文件所以具有的屬性, 從上圖也可以看出, 這個文件具有 i 和 a 屬性, 至於這些字母代表什么意思, 可以參考這個連接

  http://www.cnblogs.com/JasonYangBlogs/p/4833896.html(雖然通過linux命令: man chattr, 也可以看到英文版本, 不過中文版理解起來更快一些)

  a :設置a之后,這個文件將只能增加數據,而不能刪除也不能修改數據,只有root才能設置這個屬性。

  i :它可以讓一個文件不能被刪除、改名,設置連接也無法寫入或添加數據。只有root才能設置這個屬性。

  因此, 這個file1具有這兩個隱藏屬性后, 直接使用rm命令是無法刪除這個文件的.

  那怎么辦呢, 很簡單, 通過chattr命令, 修改這兩個文件的屬性后, 就可以正常刪除了.

  命令為: chattr -ia ./file1

    這里 '-' 的意思表示去除, 同理, "+" 表示設置文件的屬性, 如圖

  

  --------------------------------------------- 分割線---------------------------------------------

 

新情況, 即使取消了無法刪除的屬性, 依然無法刪除文件

  如圖:

  

  這是為什么, 明明刪除去除了文件的不可刪屬性, 怎么還是刪除不了文件, 連root用戶都刪除不了, 那還有其它用戶可以刪除么???  

  答案是不可能, 如果連root用戶都刪除不了的文件, 其它用戶更不可能刪除得了, 因此只能是其它問題引起的, 當時想了很久, 一直沒有明白為什么會刪除不了, 網上也沒有找到想要的答案, 就這樣一直耗着. 

  后來, 請教別人的時候, 看到別人會查看文件夾的隱藏屬性, 實然之間, 就明白是什么回事了.

  --------------------------------------------- 分割線 -------------------------------------------

問題的解決

  其實這個問題很簡單, 就是因為當前文件的文件夾(目錄)的隱藏屬性是不可刪除的, 因此當你要刪除文件夾(目錄)下面的文件時, 系統也會提示文件不可刪除, 權限不足.

  如圖

  

  file2文件在文件夾(目錄)dir1下, 雖然file2文件已經去掉了不可刪除屬性, 但因為其所在的文件夾(目錄)的屬性也是不可刪除, 最終, file2文件也因此無法刪除!!!!

  解決的辦法就是將當前文件所在的文件夾(目錄){有時候可能不止一層文件夾(目錄)被設置成了不可刪除屬性}的不可刪除屬性去掉即可, 若是有多層文件夾(目錄)都具有不可刪除屬性, 那就需要保證每層的不可刪除屬性都去掉了, 之后就可以刪除那一直以來刪除不了的文件了

  如圖:

  

 

總結:

  思維還是應該多發散一些, IT的邏輯還是很清晰的, 需要個人好好思考! 

 


免責聲明!

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



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