一、故障现象
E45: 'readonly' option is set (add ! to override)当前登录用户为root,修改文件时提示"W10: Warning: Changing a readonly file",保存时提示'E45 ‘readonly‘ option is set(add ! to override)'
二、解决思路
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