zoukankan      html  css  js  c++  java
  • 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的逻辑还是很清晰的, 需要个人好好思考! 

  • 相关阅读:
    条件随机场(crf)及tensorflow代码实例
    Adam作者大革新, 联合Hinton等人推出全新优化方法Lookahead
    33.服务之间的调用之RPC、Restful深入理解
    RPC框架调用过程详解
    Spring 面试问题 TOP 50
    myBatis+Spring+SpringMVC框架面试题整理
    JavaSSM框架精选50道面试题
    maven build的常用生命周期
    玄武短信接口和移动MAS短信接口的API封装
    Java异步执行多个HTTP请求的例子(需要apache http类库)
  • 原文地址:https://www.cnblogs.com/vitoboy/p/7584486.html
Copyright © 2011-2022 走看看