码迷,mamicode.com
首页 > 系统相关 > 详细

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

时间:2019-03-12 18:34:14      阅读:250      评论:0      收藏:0      [点我收藏+]

标签:属性   文件属性   lsattr   mic   linu   目录   lsa   不能   dir   

场景:

  公司要求卸载软件时, 也包含卸载一个目录下的所有文件. 于是去修改删除文件的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文件也因此无法删除!!!!

  解决的办法就是将当前文件所在的文件夹(目录){有时候可能不止一层文件夹(目录)被设置成了不可删除属性}的不可删除属性去掉即可, 若是有多层文件夹(目录)都具有不可删除属性, 那就需要保证每层的不可删除属性都去掉了, 之后就可以删除那一直以来删除不了的文件了

  如图:

  技术图片

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

标签:属性   文件属性   lsattr   mic   linu   目录   lsa   不能   dir   

原文地址:https://www.cnblogs.com/wcm19910616/p/10518252.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!