linux 文件属性被替换修改查询并修改 ----i-----------
系统服务发布本来非常正常,但是今天不知道为什么,打包发布异常,删除文件目录的权限都没有。
上网搜索后,最终找到文件属性被修改,导致无法删除。
通过lsattr命令查询文件的属性,如果出现,其中
----i-----------
的文件是属性被修改的。
查找文件时,注意,隐藏文件也要查询。
[root@localhost code]# lsattr ----i----------- ./cwx-core ----i----------- ./cwx-api ----i----------- ./cwx-cus ---------------- ./cwx-trs-api ---------------- ./cwx-app-agg
查询目录下所有-i 的文件。该命令查询包含-i的文件,并且目录递归查询。查询结果输出到a.log
lsattr -a -R | grep "\-i\-" > a.log
拿到a.log文件后,进行批量替换,
通过 chattr -i 替换 ----i-----------,然后命令执行。
再次查询得到如下结果,接着,就可以删除目录了。
[root@localhost code]# lsattr ---------------- ./cwx-core ---------------- ./cwx-api ---------------- ./cwx-cus ---------------- ./cwx-trs-api ---------------- ./cwx-app-agg
其中lsattr命令的参数如下
选项 说明 -a 列出所有文件和目录,包括以.开头的隐藏文件 -d 只列出目录的属性,而不是其下的文件 -R 递归处理,将指定目录下的所有文件及子目录一并处理 -v 显示文件的版本/生成号
真烦。。
替换文件时,发现有的class,还无法把属性改回来
rm: cannot remove ‘abc/impl/EntrustOrderServiceImpl$2.class’: Operation not permitted rm: cannot remove ‘abc/impl/EntrustOrderServiceImpl$3.class’: Operation not permitted
即使执行
chattr -i abc/impl/EntrustOrderServiceImpl$3.class 这里会提示找不到文件
处理办法使用通配符*,可以解决问题。
chattr -i abc/impl/*
匹配最后一个斜杠后面的字符串正则表达式
[^/]+(?!.*/)