前言

有时候会发现文件被锁,表现为无法修改,无法删除(rm),也无法上777权限

此时可能是因为文件权限被锁,尤其常见于网络DNS解析和其他系统文件中。

本文以DNS-NS文件为例来解决类似的问题。

报错表现

  1. rm时提示“rm: cannot remove '/etc/resolv.conf': Operation not permitted”
  2. 宝塔面板删除、修改、上权限失败
  3. 其他方式修改删除也失败

解决方法

首先是检查

lsattr /etc/resolv.conf

如果文件出现一长串-其中还有个i则需要

sudo chattr -i /etc/resolv.conf

此时应该就没i了

然后可以考虑直接改也可以删除了新建,删除命令如下

rm -f /etc/resolv.conf

相关资料

chattr命令的用法:chattr [ -RVf ] [ -v version ] [ mode ] files…

+ :在原有参数设定基础上,追加参数。

- :在原有参数设定基础上,移除参数。

= :更新为指定参数设定。

A:文件或目录的 atime (access time)不可被修改(modified), 可以有效预防例如手提电脑磁盘I/O错误的发生。

S:硬盘I/O同步选项,功能类似sync。

a:即append,设定该参数后,只能向文件中添加数据,而不能删除,多用于服务器日志文件安全,只有root才能设定这个属性。

c:即compresse,设定文件是否经压缩后再存储。读取时需要经过自动解压操作。

d:即no dump,设定文件不能成为dump程序的备份目标。

i:设定文件不能被删除、改名、设定链接关系,同时不能写入或新增内容。i参数对于文件 系统的安全设置有很大帮助。

j:即journal,设定此参数使得当通过mount参数:data=ordered 或者 data=writeback 挂 载的文件系统,文件在写入时会先被记录(在journal中)。如果filesystem被设定参数为 data=journal,则该参数自动失效。

s:保密性地删除文件或目录,即硬盘空间被全部收回。

u:与s相反,当设定为u时,数据内容其实还存在磁盘中,可以用于undeletion。

DNS修改助手

除了直接改动文件,使用宝塔面板LINUX工具箱,也可以使用这个脚本

wget --no-check-certificate 'https://raw.githubusercontent.com/BlueSkyXN/ChangeSource/master/changedns.sh' && bash changedns.sh

参考资料

https://support.tools/post/fix-stuck-resolv-conf/

https://www.shuzhiduo.com/A/A2dmEOnWde/

https://moththe.com/posts/sh_changedns/