可以在文件或目录上设置某些控制属性,以允许追加数据,防止数据被更改或删除等。例如,您可以启用关键系统文件或目录上的属性,以便任何用户 (包括 root) 都不能删除或更改它,禁止备份实用程序 (如 dump 命令) 备份特定的文件或目录,等等。这些属性只能在 ext2、ext3 或 ext4 文件系统中的文件和目录上设置。 有 lsattr 和 chattr 两个命令用于属性管理,下面是常用属性列表: 属性 描述 a (append) 允许对文件进行追加操作 A 此属性不允许更新文件的访问时间 c (compressed) 当此属性启用时,文件将自动压缩到磁盘上 d (dump) 文件不能通过 dump 命令进行备份 D 当此属性启用时,更改将同步存储在磁盘上 e (extent format) 它显示文件正在使用区段映射磁盘上的块 i (immutable) 当该属性在文件上启用时,我们不能修改,重命名和删除文件 j (journaling) 当设置此属性时,文件的数据先存储在日志中,然后再写入文件 S (synchronous) 设置此属性后,更改或修改将同步存储在磁盘上 chattr 命令中可使用的不同选项:-R 递归地更改目录及其子目录的属性-f 禁止显示大多数错误消息-V 详细输出信息 用于 chattr 命令中设置和取消设置属性的操作符:+ 用于设置文件和目录的属性- 用于删除或取消设置属性= 使它们成为文件所拥有的唯一属性chattr 命令语法:# chattrlsattr 命令语法:# lsattr (1) 使文件不可变[root@linuxtechi ~]# chattr +i dummy_data [root@linuxtechi ~]# lsattr dummy_data ----i----------- dummy_data 现在尝试删除和编辑文件[root@linuxtechi ~]# rm -f dummy_data rm: cannot remove ‘dummy_data’: Operation not permitted [root@linuxtechi ~]# echo "test" >> dummy_data -bash: dummy_data: Permission denied(2)删除不可变属性[root@linuxtechi ~]# chattr -i dummy_data [root@linuxtechi ~]# lsattr dummy_data ---------------- dummy_data(3) 只允许对文件进行追加操作[root@linuxtechi ~]# chattr +a dummy_data [root@linuxtechi ~]# lsattr dummy_data -----a---------- dummy_data 尝试对文件追加内容[root@linuxtechi ~]# cat /etc/fstab >> dummy_data [root@linuxtechi ~]#(4) 保护目录及其子目录 让我们创建一个目录 sysadmin 及其子目录[root@linuxtechi ~]# mkdir sysadmin [root@linuxtechi ~]# mkdir sysadmin/admim_{1,2,3,4,5} [root@linuxtechi ~]# ls -l sysadmin/ total 0 drwxr-xr-x. 2 root root 6 Apr 19 09:50 admim_1 drwxr-xr-x. 2 root root 6 Apr 19 09:50 admim_2 drwxr-xr-x. 2 root root 6 Apr 19 09:50 admim_3 drwxr-xr-x. 2 root root 6 Apr 19 09:50 admim_4 drwxr-xr-x. 2 root root 6 Apr 19 09:50 admim_5 在目录 sysadmin 上递归地设置不可变属性[root@linuxtechi ~]# chattr -R +i sysadmin [root@linuxtechi ~]# lsattr -R sysadmin/ ----i----------- sysadmin/admim_1 sysadmin/admim_1: ----i----------- sysadmin/admim_2 sysadmin/admim_2: ----i----------- sysadmin/admim_3 sysadmin/admim_3: ----i----------- sysadmin/admim_4 sysadmin/admim_4: ----i----------- sysadmin/admim_5 sysadmin/admim_5: [root@linuxtechi ~]# 现在尝试使用 rm 命令删除目录[root@linuxtechi ~]# rm -rf sysadmin rm: cannot remove ‘sysadmin/admim_1’: Permission denied rm: cannot remove ‘sysadmin/admim_2’: Permission denied rm: cannot remove ‘sysadmin/admim_3’: Permission denied rm: cannot remove ‘sysadmin/admim_4’: Permission denied rm: cannot remove ‘sysadmin/admim_5’: Permission denied [root@linuxtechi ~]# 要递归地取消属性设置,请使用以下命令[root@linuxtechi ~]# chattr -R -i sysadmin我的开源项目 酷瓜云课堂-开源知识付费解决方案course-tencent-cloud(酷瓜云课堂 - gitee 仓库)course-tencent-cloud(酷瓜云课堂 - github 仓库)