chmod只是改变文件的读写、执行权限,更底层的属性控制是由chattr来改变的,chattr控制更细腻。
chattr命令用于改变文件属性。
这项指令可改变存放在文件系统上的文件或目录属性,这些属性共有以下8种模式:
a
:让文件或目录仅供附加用途。b
:不更新文件或目录的最后存取时间。c
:将文件或目录压缩后存放。d
:将文件或目录排除在倾倒操作之外。i
:不得任意更动文件或目录。s
:保密性删除文件或目录。S
:即时更新文件或目录。u
:预防意外删除。
语法
chattr [-RV][-v<版本编号>][+/-/=<属性>][文件或目录...]
参数
-R
递归处理,将指定目录下的所有文件及子目录一并处理。
-v
<版本编号> 设置文件或目录版本。
-V
显示指令执行过程。
+
<属性> 开启文件或目录的该项属性。
-
<属性> 关闭文件或目录的该项属性。
=
<属性> 指定文件或目录的该项属性。
实例
用chattr命令防止系统中某个关键文件被修改:
# lsattr /etc/resolv.conf
---------------- /etc/resolv.conf
# chattr +i /etc/resolv.conf
# lsattr /etc/resolv.conf
----i----------- /etc/resolv.conf
# echo aa >> /etc/resolv.conf
-bash: /etc/resolv.conf: Permission denied
# chattr -i /etc/resolv.conf
# lsattr /etc/resolv.conf
---------------- /etc/resolv.conf
让某个文件只能往里面追加数据,但不能删除,适用于各种日志文件:
# lsattr /var/log/messages
---------------- /var/log/messages
# chattr +a /var/log/messages
# lsattr /var/log/messages
-----a---------- /var/log/messages
# echo s > /var/log/messages
-bash: /var/log/messages: Operation not permitted
# echo s >> /var/log/messages
# chattr -a /var/log/messages
其他
报错信息
# chattr +i /etc/resolv.conf
Operation not supported while reading flags on /etc/resolv.conf
原因是 /etc/resolv.conf
是个软连接,不能进行chattr
操作,操作软连接对应的目标文件即可。
评论