CentOS环境下,root修改文件权限时,报错:chmod: changing permissions of ‘cadvisor’: Operation not permitted问题的处理策略
今天在给项目解决一个问题时,需要修改文件,增加文件的执行权限,按照常规的做法无非就是:
chmod 755 二进制文件
就可以解决了,但是,在执行赋权命令时,却报了下面的错误
[root@nccztsjb-node-14 bin]# chmod 755 cadvisor chmod: changing permissions of ‘cadvisor’: Operation not permitted [root@nccztsjb-node-14 bin]#
看到这个错误,就有点让我困惑不解,我明明是root用户,这个具有最高级权限的,超级管理员,本应该可以做任何的事情,但是一个小小的修改文件权限都做不了吗?
事实证明,确实是这样的,因为文件被赋予了一个隐藏的权限
[root@nccztsjb-node-14 bin]# lsattr cadvisor ----i--------e-- cadvisor [root@nccztsjb-node-14 bin]# lsattr -l cadvisor cadvisor Immutable, Extents [root@nccztsjb-node-14 bin]#
就是我们看到的 i (Immutable:不可变的)这个属性,使得文件,即使是超级管理员也不允许修改,这个属性的根本目的,就是为了要保护文件不被修改。
那么,既然已经知道了问题的所在,该如何破局呢?
方法也很简单,使用lsattr的小伙伴chattr就可以彻底去除这个 i 的属性
chattr -i cadvisor [root@nccztsjb-node-14 bin]# lsattr cadvisor -------------e-- cadvisor [root@nccztsjb-node-14 bin]# lsattr -l cadvisor cadvisor Extents [root@nccztsjb-node-14 bin]#
之后,我们再返回来,执行我们的赋权命令
chmod 755 cadvisor
轻松搞定,无任何异常!
看来在linux中,还有所谓的隐藏文件属性,不只是 755 rwx。
当然了,经过这次,我们对于linux系统中,对安全的管理方式,又有了一个更加深入的理解。