chattr 命令可以用来锁住一个不能删除的文件,这当需要一个任何人都不能删除的文件时,使用chattr 命令特别合适,其语法格式如下:
chattr [选项] filename
常用参数:
-R : 递归处理,将指定目录下的所有文件及子目录一并处理;
-v <version num> : 设置文件或目录版本;
-V : 显示指令执行过程;
+ < attribute > :开启文件或目录的该项属性;
- < attribute > :关闭文件或目录的该项属性;
= < attribute > : 指定文件或目录的该项属性;
a :使文件或目录仅供附加用途;
b :不更新文件或目录的最后存取时间;
c :将文件或目录压缩后存放;
d :将文件或目录排除在倾倒操作之外;
i :不得任意更动文件或目录;
s :保密性删除文件或目录;
S :即时更新文件或目录;
u :预防意外删除;
演示示例:
chattr +a /var/log/messages #让文件只能往里面追加数据,查看数据,但不能删除,适用于各种日志文件
rm -rf tetx.log #root超级管理员用户删除也报权限问题,无法删除
rm: cannot remove tetx.log: Operation not permitted
lsattr tetx.log #显示文件的属性,发现有个a
-----a-------e-- tetx.log
chattr -a tetx.log #移除a
rm -rf tetx.log #能正常删除
chattr +i /root/text.txt #加i限制,无法添加内容,能查看内容,但是任何人不能删除该文件,即使是root用户或文件的属主用户
cat /root/text.txt #能正常查看内容
fsdsd
echo "tetx.ldfdfdog" >>/root/text.txt #无法写入内容,报权限问题
-bash: tetx.log: Permission denied
chattr -i /root/text.txt #取消限制,对文件具有权限的用户能更改文件
lsattr 命令查看文件属性
lsattr命令语法格式:
Usage: lsattr [-RVadlv] [files...]
参数:
-R,表示级联查看目录下的全部文件
-a,显示隐藏文件
-d,表示仅查看目录
-l,显示完整路径
示例:
[root@master01 ~]# lsattr /etc/resolv.conf
----i-------- /root/text.txt #显示属性,有个i
[root@master01 ~]# lsattr -d /etc/ #-d显示目录
---------------- /etc/
[root@master01 ~]#
[root@master01 ~]# lsattr /etc/ #仅显示etc这级目录下面的普通文件
[root@master01 ~]# lsattr -R /etc/ #级联显示etc下面所有的文件
[root@master01 ~]# lsattr -Ra /etc/ #级联显示etc下面所有的文件,包括隐藏文件
演示示例1、任何人不能添加用户
使用chattr 命令给 /etc/passwd
加个+i属性,让任何人不能往 /etc/passwd
文件添加内容,也不能删除/etc/passwd
文件
chattr +i /etc/passwd
演示示例2、任何人不能删除/etc/passwd文件
使用chattr 命令给 /etc/passwd
加个+a属性,让任何人不能删除/etc/passwd
文件,但是可以添加用户写入内容
chattr +a /etc/passwd
安全
既然你能使用chattr命令对文件添加属性,让别人无法删除,但是别人也可以使用chattr命令进行解除属性,所以为了安全,我们可以将chattr命令重命名:
which chattr #查看chattr命令的绝对路径
/usr/bin/chattr
mv /usr/bin/chattr /opt/cr #移动命令并重命名,重命名为一个自己记住的名称