場景:html
公司要求卸載軟件時, 也包含卸載一個目錄下的全部文件. 因而去修改刪除文件的shell腳本, 添加了刪除文件及文件夾的命令(固然是在root權限下的)linux
如: rm -rf /home/vito/****shell
但發現運行shell腳本時, 死活刪除不了那個目錄下的文件, 固然也就刪除不了目錄, 同時提示----rm: cannot remove '/home/vito/****/xxx.xxx': Permission denied.spa
在網上查了一下, 說這種狀況下, 通常都是該文件被設置了一些不可刪除的屬性, 如圖:3d
能夠經過命令lsattr filename, 查看文件因此具備的屬性, 從上圖也能夠看出, 這個文件具備 i 和 a 屬性, 至於這些字母表明什麼意思, 能夠參考這個鏈接htm
http://www.cnblogs.com/JasonYangBlogs/p/4833896.html(雖然經過linux命令: man chattr, 也能夠看到英文版本, 不過中文版理解起來更快一些)blog
a :設置a以後,這個文件將只能增長數據,而不能刪除也不能修改數據,只有root才能設置這個屬性。rem
i :它可讓一個文件不能被刪除、更名,設置鏈接也沒法寫入或添加數據。只有root才能設置這個屬性。it
所以, 這個file1具備這兩個隱藏屬性後, 直接使用rm命令是沒法刪除這個文件的.io
那怎麼辦呢, 很簡單, 經過chattr命令, 修改這兩個文件的屬性後, 就能夠正常刪除了.
命令爲: chattr -ia ./file1
這裏 '-' 的意思表示去除, 同理, "+" 表示設置文件的屬性, 如圖
--------------------------------------------- 分割線---------------------------------------------
新狀況, 即便取消了沒法刪除的屬性, 依然沒法刪除文件
如圖:
這是爲何, 明明刪除去除了文件的不可刪屬性, 怎麼仍是刪除不了文件, 連root用戶都刪除不了, 那還有其它用戶能夠刪除麼???
答案是不可能, 若是連root用戶都刪除不了的文件, 其它用戶更不可能刪除得了, 所以只能是其它問題引發的, 當時想了好久, 一直沒有明白爲何會刪除不了, 網上也沒有找到想要的答案, 就這樣一直耗着.
後來, 請教別人的時候, 看到別人會查看文件夾的隱藏屬性, 實然之間, 就明白是什麼回事了.
--------------------------------------------- 分割線 -------------------------------------------
問題的解決
其實這個問題很簡單, 就是由於當前文件的文件夾(目錄)的隱藏屬性是不可刪除的, 所以當你要刪除文件夾(目錄)下面的文件時, 系統也會提示文件不可刪除, 權限不足.
如圖
file2文件在文件夾(目錄)dir1下, 雖然file2文件已經去掉了不可刪除屬性, 但由於其所在的文件夾(目錄)的屬性也是不可刪除, 最終, file2文件也所以沒法刪除!!!!
解決的辦法就是將當前文件所在的文件夾(目錄){有時候可能不止一層文件夾(目錄)被設置成了不可刪除屬性}的不可刪除屬性去掉便可, 如果有多層文件夾(目錄)都具備不可刪除屬性, 那就須要保證每層的不可刪除屬性都去掉了, 以後就能夠刪除那一直以來刪除不了的文件了
如圖:
總結:
思惟仍是應該多發散一些, IT的邏輯仍是很清晰的, 須要我的好好思考!