红联Linux门户
Linux帮助

linux删除不了文件,修改文件属性也删除不了的一个解决思路

发布时间:2017-09-24 10:25:39来源:linux网站作者:VitoCoder
场景:
公司要求卸载软件时, 也包含卸载一个目录下的所有文件. 于是去修改删除文件的shell脚本, 添加了删除文件及文件夹的命令(当然是在root权限下的)
如: rm -rf /home/vito/****
但发现运行shell脚本时, 死活删除不了那个目录下的文件, 当然也就删除不了目录, 同时提示----rm: cannot remove '/home/vito/****/xxx.xxx': Permission denied.
在网上查了一下, 说这种情况下, 一般都是该文件被设置了一些不可删除的属性, 如图:
linux删除不了文件,修改文件属性也删除不了的一个解决思路
可以通过命令lsattr filename, 查看文件所以具有的属性, 从上图也可以看出, 这个文件具有 i 和 a 属性(至于这些字母代表什么意思,通过linux命令: man chattr, 可以看到英文版本)
a :设置a之后,这个文件将只能增加数据,而不能删除也不能修改数据,只有root才能设置这个属性。
i :它可以让一个文件不能被删除、改名,设置连接也无法写入或添加数据。只有root才能设置这个属性。
因此, 这个file1具有这两个隐藏属性后, 直接使用rm命令是无法删除这个文件的.
那怎么办呢, 很简单, 通过chattr命令, 修改这两个文件的属性后, 就可以正常删除了.
命令为: chattr -ia ./file1
这里 '-' 的意思表示去除, 同理, "+" 表示设置文件的属性, 如图
linux删除不了文件,修改文件属性也删除不了的一个解决思路
 
新情况, 即使取消了无法删除的属性, 依然无法删除文件
如图:
linux删除不了文件,修改文件属性也删除不了的一个解决思路
这是为什么, 明明删除去除了文件的不可删属性, 怎么还是删除不了文件, 连root用户都删除不了, 那还有其它用户可以删除么?
答案是不可能, 如果连root用户都删除不了的文件, 其它用户更不可能删除得了, 因此只能是其它问题引起的, 当时想了很久, 一直没有明白为什么会删除不了, 网上也没有找到想要的答案, 就这样一直耗着. 
后来, 请教别人的时候, 看到别人会查看文件夹的隐藏属性, 实然之间, 就明白是什么回事了.
 
问题的解决
其实这个问题很简单, 就是因为当前文件的文件夹(目录)的隐藏属性是不可删除的, 因此当你要删除文件夹(目录)下面的文件时, 系统也会提示文件不可删除, 权限不足.
如图
linux删除不了文件,修改文件属性也删除不了的一个解决思路
file2文件在文件夹(目录)dir1下, 虽然file2文件已经去掉了不可删除属性, 但因为其所在的文件夹(目录)的属性也是不可删除, 最终, file2文件也因此无法删除!
解决的办法就是将当前文件所在的文件夹(目录){有时候可能不止一层文件夹(目录)被设置成了不可删除属性}的不可删除属性去掉即可, 若是有多层文件夹(目录)都具有不可删除属性, 那就需要保证每层的不可删除属性都去掉了, 之后就可以删除那一直以来删除不了的文件了
如图:
linux删除不了文件,修改文件属性也删除不了的一个解决思路
 
总结:
思维还是应该多发散一些, IT的逻辑还是很清晰的, 需要个人好好思考! 
 
本文永久更新地址:http://www.linuxdiyf.com/linux/32662.html