Linux chattr命令详解:修改文件系统的权限属性

chatrr 只有 root 用户可以使用,用来修改文件系统的权限属性,建立凌驾于 rwx 基础权限之上的授权。

chatrr 命令格式如下:
[root@localhost ~]# chattr [±=] [选项] 文件或目录名

选项:
+:増加权限;
-:删除权限;
=:等于某权限;
i:如果对文件设置属性,那么不允许对文件进行删除、改名,也不能添加和修改数据;如果对目录设置 i 属性,那么只能修改目录下文件中的数据,但不允许建立和删除文件;
a:如果对文件设置 a 属性,那么只能在文件中増加数据,但是不能删除和修改数据;如果对目录设置 a 属性,那么只允许在目录中建立和修改文件,但是不允许删除文件;
e:Linux 中的绝大多数文件都默认拥有 e 属性,表示该文件是使用 ext 文件系统进行存储的,而且不能使用"chattr -e"命令取消 e 属性;

还是举几个例子吧。
#给文件赋予属性
[root@localhost ~]# touch ftest
#建立测试文件
[root@localhost ~]# chattr +i ftest
[root@localhost ~]# rm -rf flest
rm:无法删除"ftesr":不允许的操作
#被赋予i属性后,root不能删除
[root@localhost ~]# echo 111>>ftest -bash:ftest:权限不够
#也不能修改文件中的数据
#给目录赋予i属性
[root@localhost ~]# mkdir dtest
#建立测试目录
[root@localhost dtest]# touch dtest/abc
#再建立一个测试文件abc
[root@localhost ~]# chattr +i dtest/
#给目录赋予i属性
[root@localhost ~]# cd dtest/
[root@localhost dtest]# touch bed
touch:无法创建"bcd":权限不够
#dtest目录不能新建文件
[root@localhost dtest]# echo 11>>abc
[root@localhost dtest]# cat abc
11
#但是可以修改文件内容
[root@localhost dtest]# rm -rf abc
rm:无法删除"abc":权限不够
#不能删除

此时,flest 文件和 dtest 目录都变得非常强悍,即便你是 root 用户,也无法删除和修改它。若要更改或删除文件,也必须先去掉 i 属性才可以。命令如下:
[root@localhost ~]# chattr -i ftest
[root@localhost ~]# chattr -i dtest/

在举个例子,演示一下 a 属性。假设有这样一种应用,我们每天自动实现把服务器的日志备份到指定目录,备份目录可设置 a 属性,变为只可创建文件而不可删除。命令如下:
[root@localhost ~]# mkdir -p /back/log
#建立备份目录
[root@localhost ~]# chattr +a /back/log/
#赋予a属性
[root@localhost ~]# cp /var/log/messages /back/log/
#可以复制文件和新建文件到指定目录中
[root@localhost ~]# rm -rf /back/log/messages
rm:无法删除"/back/log/messages":不允许的操作
#但是不允许删除

chattr 命令不宜对目录 /、/dev/、/tmp/、/var/ 等进行设置,严重者甚至容易导致系统无法启动。

猜你喜欢

转载自blog.csdn.net/zyy1659949090/article/details/88176560