能够在文件或目录上设置某些管制属性,以容许追加数据,避免数据被更改或删除等。例如,您能够启用要害系统文件或目录上的属性,以便任何用户 (包含 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 命令语法:

# chattr <options> <attributes> <file or Directory >

lsattr 命令语法:

# lsattr <File or Directory>

(1) 使文件不可变

[root@linuxtechi ~]# chattr +i dummy_data[root@linuxtechi ~]# lsattr dummy_data----i----------- dummy_data

当初尝试删除和编辑文件

[root@linuxtechi ~]# rm -f dummy_datarm: 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 0drwxr-xr-x. 2 root root 6 Apr 19 09:50 admim_1drwxr-xr-x. 2 root root 6 Apr 19 09:50 admim_2drwxr-xr-x. 2 root root 6 Apr 19 09:50 admim_3drwxr-xr-x. 2 root root 6 Apr 19 09:50 admim_4drwxr-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_1sysadmin/admim_1:----i----------- sysadmin/admim_2sysadmin/admim_2:----i----------- sysadmin/admim_3sysadmin/admim_3:----i----------- sysadmin/admim_4sysadmin/admim_4:----i----------- sysadmin/admim_5sysadmin/admim_5:[root@linuxtechi ~]#

当初尝试应用 rm 命令删除目录

[root@linuxtechi ~]# rm -rf sysadminrm: cannot remove ‘sysadmin/admim_1’: Permission deniedrm: cannot remove ‘sysadmin/admim_2’: Permission deniedrm: cannot remove ‘sysadmin/admim_3’: Permission deniedrm: cannot remove ‘sysadmin/admim_4’: Permission deniedrm: cannot remove ‘sysadmin/admim_5’: Permission denied[root@linuxtechi ~]#

要递归地勾销属性设置,请应用以下命令

[root@linuxtechi ~]# chattr -R -i sysadmin

我的开源我的项目

  • course-tencent-cloud(酷瓜云课堂 - gitee仓库)
  • course-tencent-cloud(酷瓜云课堂 - github仓库)