Linux基础命令-chattr更改文件隐藏属性

目录

前言

一、chattr命令介绍

二、语法及常用参数和模式

2.1 一样用help或man查看语法

2.2 常用参数

2.3 命令的模式

三、参考实例

3.1 给文件添加无法修改的权限 

3.2 从指定文件移除隐藏属性

3.3 给目录添加隐藏属性,递归操作

3.4 设置文件只能添加内容,无法覆盖

3.5 不再修改文件或目录的访问时间

四、chattr的问答题

4.1 模拟找命令的过程

 4.2 解决方法

总结

前言

        前面了解了文件的权限和特殊权限,今天讲一下chattr这个命令,主要是用来更改文件隐藏属性,下面一起来看下。

一、chattr命令介绍

        chattr命令来自于英文词组“chang attribute”的缩写,其功能是用于更改文件隐藏属性。常用的ls命令仅能能够查看到文件的一般权限、特殊权限、SELinux安全上下文与是否有FACL访问控制列表的情况,且无法查看到文件隐藏属性。

二、语法及常用参数和模式

2.1 一样用help或man查看语法

NAME
       chattr - change file attributes on a Linux file system

SYNOPSIS
       chattr [ -RVf ] [ -v version ] [ mode ] files...

语法:chattr  【参数】【模式】文件

这里语法的格式除了可以加参数,还需要加模式。

2.2 常用参数

先来讲讲参数方面有哪些比较常用到的,以表格形式列出

-R递归处理目录下的所有文件
-v设置文件或目录版本
-V显示指令执行过程
+开启文件或目录的该项属性
--关闭文件或目录的该项属性
=指定文件或目录的该项属性

2.3 命令的模式

 命令的模式有以下这些内容,以表格形式呈现,即设置的权限和对应的作用

权限作用
i无法对文件进行修改;若对目录设置了该参数,则仅能修改其中的子文件内容而不能新建或删除文件
a仅允许补充(追加)内容,无法覆盖/删除内容(Append Only)
S文件内容在变更后立即同步到硬盘(sync)
s彻底从硬盘中删除,不可恢复(用0填充原文件所在硬盘区域)
A不再修改这个文件或目录的最后访问时间(atime)
b不再修改文件或目录的存取时间
D检查压缩文件中的错误
d使用dump命令备份时忽略本文件/目录
c默认将文件或目录进行压缩
u当删除该文件后依然保留其在硬盘中的数据,方便日后恢复
t让文件系统支持尾部合并(tail-merging)
x可以直接访问压缩文件中的内容

三、参考实例

3.1 给文件添加无法修改的权限 

可以看到文件设置了无法修改的权限后,文件不能被删除; 

[root@localhost ~]# chattr +i anaconda-ks.cfg 
[root@localhost ~]# lsattr anaconda-ks.cfg 
----i----------- anaconda-ks.cfg

[root@localhost ~]# rm -r anaconda-ks.cfg 
rm:是否删除普通文件 "anaconda-ks.cfg"?y
rm: 无法删除"anaconda-ks.cfg": 不允许的操作

3.2 从指定文件移除隐藏属性

[root@localhost ~]# chattr -i anaconda-ks.cfg 
[root@localhost ~]# lsattr anaconda-ks.cfg 
---------------- anaconda-ks.cfg

3.3 给目录添加隐藏属性,递归操作

[root@localhost ~]# chattr -R +i data/
[root@localhost ~]# lsattr data/
----i----------- data/a.txt
----i----------- data/b.txt
[root@localhost ~]# lsattr data/ -d
----i----------- data/

3.4 设置文件只能添加内容,无法覆盖

[root@localhost ~]# echo "123456" > a.txt
[root@localhost ~]# chattr +a a.txt 
[root@localhost ~]# echo "123456" > a.txt 
bash: a.txt: 不允许的操作
[root@localhost ~]# echo "123456" >> a.txt 
[root@localhost ~]# cat a.txt 
123456
123456

3.5 不再修改文件或目录的访问时间

[root@localhost ~]# chattr +A anaconda-ks.cfg 
[root@localhost ~]# lsattr  anaconda-ks.cfg 
-------A-------- anaconda-ks.cfg
[root@localhost ~]# vim anaconda-ks.cfg 
[root@localhost ~]# stat anaconda-ks.cfg 
  文件:"anaconda-ks.cfg"
  大小:1371      	块:8          IO 块:4096   普通文件
设备:fd00h/64768d	Inode:67259498    硬链接:1
权限:(0444/-r--r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
环境:system_u:object_r:admin_home_t:s0
最近访问:2023-02-18 10:43:12.451650907 +0800
最近更改:2023-02-18 10:43:12.451650907 +0800
最近改动:2023-02-18 10:43:12.453650916 +0800
创建时间:-
[root@localhost ~]# vim anaconda-ks.cfg 
[root@localhost ~]# stat anaconda-ks.cfg 
  文件:"anaconda-ks.cfg"
  大小:1384      	块:8          IO 块:4096   普通文件
设备:fd00h/64768d	Inode:67664943    硬链接:1
权限:(0444/-r--r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
环境:system_u:object_r:admin_home_t:s0
最近访问:2023-02-18 10:43:31.555734612 +0800
最近更改:2023-02-18 10:43:31.555734612 +0800
最近改动:2023-02-18 10:43:31.555734612 +0800
创建时间:-
[root@localhost ~]# echo "123456" > anaconda-ks.cfg 
[root@localhost ~]# tail -n 1 anaconda-ks.cfg 
123456

A模式的访问时间不变,但是可以修改文件的内容以及覆盖。

四、chattr的问答题

        如果你需要用到这个chattr命令去取消文件的隐藏权限,但是你执行命令的时候显示命令不存在,这时如何将它找回来。(你不知道这个命令被修改成什么名字了)

4.1 模拟找命令的过程

[root@localhost ~]# which chattr
/usr/bin/chattr
[root@localhost ~]# mv /usr/bin/chattr /usr/bin/sanlian
以上为实验步骤



[root@localhost ~]# lsattr data/ 
----i----------- data/a.txt
----i----------- data/b.txt
[root@localhost ~]# chattr -i data/
bash: /usr/bin/chattr: 没有那个文件或目录
[root@localhost ~]# which chattr             #找不到命令位置
/usr/bin/which: no chattr in (/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/root/bin)
[root@localhost ~]# 


[root@localhost ~]# yum search chattr        #找这个命令的软件包也找不到
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.ustc.edu.cn
 * extras: mirrors.aliyun.com
 * updates: mirrors.ustc.edu.cn
警告:没有匹配 chattr 的软件包
No matches found
[root@localhost ~]# yum install chattr
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.ustc.edu.cn
 * extras: mirrors.aliyun.com
 * updates: mirrors.ustc.edu.cn
base                                                            | 3.6 kB  00:00:00     
extras                                                          | 2.9 kB  00:00:00     
updates                                                         | 2.9 kB  00:00:00     
没有可用软件包 chattr。
错误:无须任何处理


[root@localhost ~]# find / -name chattr     #find命令也找不到

 4.2 解决方法

可以直接从同系统的服务器把/usr/bin/chattr这个命令拷出来就行了

另外一台服务器上输入这个命令,把chattr传输到需要chattr的服务器

scp /usr/bin/chattr root@192.168.212.166:/usr/bin  #IP填写要传输到的服务器位置
The authenticity of host '192.168.212.166 (192.168.212.166)' can't be established.
ECDSA key fingerprint is SHA256:r7pA/vg/8gpqLgC3rG/hfxy//gF73wAsy3Kzg/Hrq1Q.
ECDSA key fingerprint is MD5:64:24:cf:fa:e9:24:e6:e9:41:c7:9f:44:9a:9e:00:6e.
Are you sure you want to continue connecting (yes/no)? yes    #按yes确认
Warning: Permanently added '192.168.212.166' (ECDSA) to the list of known hosts.
root@192.168.212.166's password:     #输入对端的密码
chattr                                               100%   10KB  10.8MB/s   00:00    

 已经可以使用这个命令了

[root@localhost ~]# chattr -i data/
[root@localhost ~]# lsattr data/
----i----------- data/a.txt
----i----------- data/b.txt
[root@localhost ~]# lsattr data/ -d 
---------------- data/

总结

        chattr命令修改文件和目录的隐藏属性,要查看文件是否设置了隐藏属性是使用latter命令去查看的,使用起来也比较简单;如果要给文件设置隐藏权限,在模式前面写上一个加号,若要取消隐藏权限,则加个减号;觉得以上内容还行的话,可以一键三连支持一下!

  • 9
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Linux学习中

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

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

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

打赏作者

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

抵扣说明:

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

余额充值