拥有root权限却无法修改文件内容

发布时间 2024-01-08 17:13:34作者: wh459086748

一、故障现象

E45: 'readonly' option is set (add ! to override)当前登录用户为root,修改文件时提示"W10: Warning: Changing a readonly file",保存时提示'E45 ‘readonly‘ option is set(add ! to override)'

img

img

二、解决思路

https://blog.csdn.net/weixin_40575457/article/details/123387100
查看文件属性发现权限为644,那没啥问题,又看登录用户,是root啊

[root@test /data/scripts]# stat test.sh 
  File: ‘test.sh’
  Size: 256             Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 37763568    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2024-01-08 15:46:47.113835946 +0800
Modify: 2024-01-08 15:46:45.926835954 +0800
Change: 2024-01-08 16:57:55.900217017 +0800
 Birth: -
[root@test /data/scripts]# whoami
root

突然想起来文件可能加一些特殊权限
https://www.cnblogs.com/world-of-yuan/p/17013326.html
[root@test /data/scripts]# lsattr test.sh 
----i----------- test.sh

然后就发现文件被其他人员加了这个权限了。

然后去掉这个权限,发现可以修改了。
[root@test /data/scripts]# chattr -i test.sh 

去掉修改完 之后,在把权限加回来
[root@test /data/scripts]# chattr +i test.sh 



i权限全称为immutable
在Linux文件系统权限中,并没有直接名为"immutable"的权限位。不过,Linux内核确实提供了一种称为"不可变(Immutable)"的文件属性,它比传统的读、写、执行权限更严格。

通过chattr命令可以设置文件的扩展属性,其中 "i" 标志表示 Immutable,即不可修改。当一个文件被设置为 Immutable 时,即使 root 用户也无法对文件进行任何修改,包括删除、重命名或更改内容等操作,除非首先取消该属性。

要查看文件是否设置了Immutable属性,可以使用以下命令:

Bash
lsattr /path/to/file
如果输出中有 "i" 字符,则表示该文件具有Immutable属性。

要设置或取消Immutable属性,可使用 chattr 命令:

设置Immutable属性:
Bash
sudo chattr +i /path/to/file
取消Immutable属性:
Bash
sudo chattr -i /path/to/file