0012. shell命令--chattr

目录

12. shell命令--chattr

功能说明

语法格式

选项说明

实践操作

注意事项


12. shell命令--chattr

功能说明

        chattr 命令来自英文词组 change attribute 的缩写,其功能是更改文件隐藏属性。常用的 ls 命令仅能查看文件的一般权限、特殊权限、SELinux 安全上下文与是否有 FACL(文件访问控制列表)等情况,但却无法查看到文件隐藏属性,所以有些运维人员甚至不清楚竟然还有第五种文件权限!

        chattr 是一个在 Linux 系统中用于改变文件属性的命令。它允许用户改变文件系统上的文件或目录的“扩展”属性。这些扩展属性提供了一些额外的功能,比如防止文件被删除、防止内容被修改、防止文件被移动或重命名等。这些功能是通过 Linux 文件系统(特别是 ext2、ext3 和 ext4)的扩展属性系统实现的。

        这项指令可改变存放在 ext2 文件系统上的文件或目录属性,这些属性共有以下 8 种模式:

  • a:让文件或目录仅供附加用途。
  • b:不更新文件或目录的最后存取时间。
  • c:将文件或目录压缩后存放。
  • d:将文件或目录排除在倾倒操作之外。
  • i:不得任意更动文件或目录。
  • s:保密性删除文件或目录。
  • S:即时更新文件或目录。
  • u:预防意外删除。

语法格式

chattr [选项] <模式> <文件或目录>
 
SYNOPSIS
    chattr [ -RVf ] [ -v version ] [ mode ] files...

选项说明

常用参数:

  • -R:递归地改变指定目录及其下所有文件和子目录的属性。
  • -v:显示详细的处理信息。
  • -V:显示执行过程详细信息。
  • -c:在处理时,不显示错误信息。
  • +:开启文件或目录的该项属性。
  • -:关闭文件或目录的该项属性。
  • =:指定文件或目录的该项属性。

常用权限: 

  • i:无法对文件进行任何修改,只有超级用户(root)才能设置或清除这个属性。
  • D:检查压缩文件中的错误
  • a:仅允许补充内容,无法覆盖/删除内容,如果文件设置了 a 属性,那么它通常用于记录日志。
  • d:使用dump命令备份时忽略本文件/目录
  • S:文件内容在变更后立即同步到硬盘
  • c:默认将文件或目录进行压缩
  • s:彻底从硬盘中删除,不可恢复
  • u:当删除某文件后依然保留其在硬盘中的数据
  • A:不再修改这个文件或目录的最后访问时间
  • b:不再修改文件或目录的存取时间
  • t:让文件系统支持尾部合并
  • x:可以直接访问压缩文件中的内容
  • e:文件只能被删除,不能被修改或重命名。

实践操作

1. 用 chattr 命令防止系统中某个关键文件被修改
mkdir -p /test/chattr    #创建测试目录
cd /test/chattr   #切换到测试目录
echo 'Linux' >file.txt    #创建测试文件
ls
cat file.txt
lsattr file.txt    #命令 lsattr 显示文件属性
chattr +i file.txt    #设置 i 属性
lsattr file.txt 
rm -f file.txt    #看看是否能删除
echo 'Hello' >>file.txt    #追加点内容,发现权限拒绝
cat file.txt 
chattr -i file.txt    #取消 i 属性
lsattr file.txt
echo 'Hello' >>file.txt    #这次就可以追加内容了
cat file.txt

2. 让某个文件只能往里面追加数据,但不能删除,适用于各种日志文件
ls
lsattr file.txt
chattr +a file.txt    #设置权限 a
lsattr file.txt
rm -f file.txt    #测试是否能够删除
cat file.txt
echo 'Hi,test!' >>file.txt    #测试是否能追加内容
cat file.txt   
echo 'Hi,test' >file.txt    #试试能否覆盖内容,测试是不行的,只能追加内容
chattr -a file.txt    #取消权限 a 
lsattr file.txt

命令示例:1. 用 chattr 命令防止系统中某个关键文件被修改

mkdir -p /test/chattr    
cd /test/chattr   
echo 'Linux' >file.txt    
ls
cat file.txt
lsattr file.txt    
chattr +i file.txt    
lsattr file.txt 
rm -f file.txt    
echo 'Hello' >>file.txt    
cat file.txt 
chattr -i file.txt    
lsattr file.txt
echo 'Hello' >>file.txt    
cat file.txt

输出结果:

[root@MineGi ~]# mkdir -p /test/chattr    
[root@MineGi ~]# cd /test/chattr   
[root@MineGi /test/chattr]# echo 'Linux' >file.txt  
[root@MineGi /test/chattr]# ls
file.txt
[root@MineGi /test/chattr]# cat file.txt
Linux
[root@MineGi /test/chattr]# lsattr file.txt 
---------------- file.txt
[root@MineGi /test/chattr]# chattr +i file.txt    
[root@MineGi /test/chattr]# lsattr file.txt 
----i----------- file.txt
[root@MineGi /test/chattr]# rm -f file.txt 
rm: 无法删除"file.txt": 不允许的操作
[root@MineGi /test/chattr]# echo 'Hello' >>file.txt    
-bash: file.txt: 权限不够
[root@MineGi /test/chattr]# cat file.txt 
Linux
[root@MineGi /test/chattr]# chattr -i file.txt 
[root@MineGi /test/chattr]# lsattr file.txt
---------------- file.txt
[root@MineGi /test/chattr]# echo 'Hello' >>file.txt    
[root@MineGi /test/chattr]# cat file.txt
Linux
Hello
[root@MineGi /test/chattr]# 

命令示例:2. 让某个文件只能往里面追加数据,但不能删除,适用于各种日志文件

ls
lsattr file.txt
chattr +a file.txt    
lsattr file.txt
rm -f file.txt    
cat file.txt
echo 'Hi,test!' >>file.txt    
cat file.txt   
echo 'Hi,test' >file.txt    
chattr -a file.txt    
lsattr file.txt

输出结果:

[root@MineGi /test/chattr]# ls
file.txt
[root@MineGi /test/chattr]# lsattr file.txt
---------------- file.txt
[root@MineGi /test/chattr]# chattr +a file.txt    
[root@MineGi /test/chattr]# lsattr file.txt
-----a---------- file.txt
[root@MineGi /test/chattr]# rm -f file.txt    
rm: 无法删除"file.txt": 不允许的操作
[root@MineGi /test/chattr]# cat file.txt
Linux
Hello
[root@MineGi /test/chattr]# echo 'Hi,test!' >>file.txt    
[root@MineGi /test/chattr]# cat file.txt   
Linux
Hello
Hi,test!
[root@MineGi /test/chattr]# echo 'Hi,test' >file.txt    
-bash: file.txt: 不允许的操作
[root@MineGi /test/chattr]# chattr -a file.txt    
[root@MineGi /test/chattr]# lsattr file.txt
---------------- file.txt
[root@MineGi /test/chattr]#

注意事项

  • 使用 chattr 命令需要谨慎,特别是当你设置文件为不可修改或不可删除时。一旦设置,即使作为 root 用户也可能难以恢复文件的正常状态。
  • 不是所有的文件系统都支持 chattr 命令。它主要在 ext2、ext3 和 ext4 文件系统上工作。

        在使用 chattr 命令之前,最好先了解其工作原理和潜在的风险,并在非生产环境中进行测试。

        然而,尽管chattr命令提供了强大的功能,但使用时也需要谨慎。不恰当的使用可能导致文件或目录变得无法访问或修改,甚至可能导致系统不稳定。因此,在使用chattr命令之前,建议用户先了解其工作原理和可能的副作用。

        chattr 命令的使用场景多种多样,从保护系统文件不被误删除或修改,到记录日志文件的追加操作,都可以使用 chattr 命令来实现。然而,在使用 chattr 命令时,用户需要注意,不是所有的文件系统都支持这个命令。尽管它在 ext2、ext3 和 ext4 等主流 Linux 文件系统上工作得很好,但在某些其他类型的文件系统上可能无法使用。

        此外,chattr 命令的某些选项和模式可能具有破坏性,如果不正确使用,可能会导致数据丢失或系统崩溃。因此,在使用这些选项和模式时,用户需要格外小心,并确保完全理解它们的作用。

        总的来说,chattr命令是Linux系统中一个强大的工具,可以帮助用户更好地管理和保护文件和目录。然而,由于其潜在的风险和复杂性,用户在使用时需要谨慎行事,并遵循最佳实践。在使用chattr命令之前,最好先备份重要数据,并在非生产环境中进行测试,以确保不会对系统造成任何损害。

        最后,值得注意的是,尽管 chattr 命令提供了强大的文件保护功能,但它并不能替代其他安全措施,如文件系统备份、访问控制列表(ACL)等。因此,在保护文件和目录时,用户应该采取多种安全措施,以确保数据的安全性和完整性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MineGi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值