这个坑值得记一笔。编辑主配置保存时报 Operation not permitted,用 root 身份也一样,ls 看权限明明是六百四十四,属主也是 root 本人。
原因不止一个,得分开看。文件被设成了不可变属性,谁都改不了;所在目录被加了只允许追加的属性;安全加固脚本批量加了属性,事后没有留下记录。
第一件事是查看文件属性
lsattr /etc/nginx/nginx.conf
去掉不可变属性
chattr -i /etc/nginx/nginx.conf
再往下改完按需恢复属性
chattr +i /etc/nginx/nginx.conf
末了核对目录是否也被锁
lsattr -d /etc/nginx
中途换过一次思路,把范围缩到最小的那一层,反而快了。
中间停过一次,把已经改的东西回滚干净,再重新来一遍。
同样的操作我在测试机上先走了一遍,线上只做验证过的部分。
改完先别撤,确认这几项。属性列表里的不可变标志消失,编辑保存成功,配置校验通过并且能正常重载。
加了不可变的文件连 root 都删不掉,加固之后要留一份属性清单;运维交接时这类隐藏状态最容易踩坑。线上能稳定复现的问题都不算难,难的是只在大流量下才出现的那种。