1. 命令功能
chattr和lsattr用来改变文件、目录属性和查看这种文件属性;chmod只是改变文件的读、写、执行权限,更底层的属性控制是由chattr来改变。
2. 语法格式
chattr [ -RVf ] [ -v version ] [ mode ] files.
关键说明:
[mode]部分由+-=和[ASacDdIijsTtu]字符组成,这部分用来控制文件属性。
参数 |
参数说明 |
+ |
在原有参数设定基础上,追加参数 |
- |
在原有参数设定基础上,移除参数 |
= |
更新为指定参数设定 |
A |
文件或目录的atime(access time)不可被修改 |
a |
append,只能向文件中添加数据,而不能删除,用于服务器日志安全,只有root才能设定这个权限 |
c |
compresse,设定文件是否压缩后在存储,读取时需要经过自动解压操作。 |
i |
设定文件不能被删除,改名,设定链接关系,同时不能写入或新增内容,i参数对于文件系统安全设置有较大帮助。 |
s |
保密性删除文件或目录,及硬盘空间被全部回收。 |
3. 使用范例
范例1:chattr防止系统中某个关键文件被修改
[root@localhost data]# cp /etc/resolv.conf .
[root@localhost data]# chattr +i resolv.conf #给文件加上不能被改变权限属性
[root@localhost data]# echo "hello world" >> resolv.conf #不能追加内容
-bash: resolv.conf: Permission denied
[root@localhost data]# rm resolv.conf #不能删除
rm: remove regular file `resolv.conf'? y
rm: cannot remove `resolv.conf': Operation not permitted
[root@localhost data]# mv resolv.conf resolv.conf.bak #不能改名
mv: cannot move `resolv.conf' to `resolv.conf.bak': Operation not permitted
范例2:取消 -i权限
[root@localhost data]# chattr -i resolv.conf
[root@localhost data]# echo 'hello' >> resolv.conf
[root@localhost data]# cat resolv.conf
nameserver 114.114.114.114
nameserver 61.128.128.68
hello world
hello
范例3:只能追加,不能删除,适用于日志
[root@localhost data]# chattr +a resolv.conf
[root@localhost data]# echo "123" >> resolv.conf
[root@localhost data]# echo "456" > resolv.conf
-bash: resolv.conf: Operation not permitted #删除报错
[root@localhost data]# cat resolv.conf
......
hello
123