【报错!】Root用户下删除文件失败rm: cannot remove ‘[文件名]’: Operation not permitted

一、原因剖析

       我们都知道root的权限应该是最高级,最近我在root用户下进行文件删除指令时报错:Operation not permitted。
【报错!】Root用户下删除文件失败rm: cannot remove ‘[文件名]’: Operation not permitted_第1张图片
      权限不足?不应该啊,我是root啊!如果是其他普通用户,我们大可以chmod进行权限授予。其实啊,确实是有root这样的权限也惹不起的存在,那就是chattr,它是我们授权命令chmod的底层命令。
       chattr命令可以改变存放在ext2文件系统上的文件或目录的属性。并且这种改变是root也无法通过普通操作直接修改的。
       chattr的基本语法是:chattr [-RV][-v<版本编号>][+/-/=<属性>][文件或目录...]
参数

  • -R 递归处理,将指定目录下的所有文件及子目录一并处理。
  • -v<版本编号> 设置文件或目录版本。
  • -V 显示指令执行过程。
  • +<属性> 开启文件或目录的该项属性。
  • -<属性> 关闭文件或目录的该项属性。
  • =<属性> 指定文件或目录的该项属性。后面可以跟8种追加属性,分别代表不同的含义,具体如下:
属性名 Value
a 让文件或目录仅供附加用途
b 不更新文件或目录的最后存取时间
c 将文件或目录压缩后存放
d 将文件或目录排除在倾倒操作之外
i 不得任意更动文件或目录
s 保密性删除文件或目录
S 即时更新文件或目录
u 预防意外删除

       当遇到自身用户权限充足,却无法操作修改某项文件时,我们就要注意是否是因为chattr对文件属性的改变,通常是属性i的影响。

二、具体解决方法

       既然chattr是直接改变的文件属性,那么我们要排查是否是chattr授权的影响,那么就要查看所要操作的文件的权限了,这时候我们要用到lsattr这个命令
       lsattr 用于显示文件属性,针对于我之前的报错,具体解决如下:
    (1)lsattr 查看该文件属性
       我这个是直接查看当前路径下的所有文件属性.(如果要查特定文件,在后面加上文件属性即可。)lsattr
在这里插入图片描述
      如上图所示,authorized_keys文件多了一个”i”属性,i代表不得随意更改该文件或目录。
       这也就解释了为什么之前root用户下无法删除的原因。
    (2)chattr去i属性
       既然查明了是受i属性的影响,那就把i去掉。
       操作命令:chattr -i ./authorized_keys
在这里插入图片描述
    (3)复查一下文件属性
       命令lsattr,发现果然i属性被去除了
在这里插入图片描述
    (4)执行操作
       这时候我来执行原本想执行的操作,删除目标文件,命令rm authorized_keys
在这里插入图片描述
    (5)检查一下,成功
       命令ls
       发现当前目录下已经没有了authorized_keys,操作成功!

你可能感兴趣的:(那些年的报错)