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 [email protected]:/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.
[email protected]'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命令去查看的,使用起来也比较简单;如果要给文件设置隐藏权限,在模式前面写上一个加号,若要取消隐藏权限,则加个减号;觉得以上内容还行的话,可以一键三连支持一下!

Linux基础命令-chattr更改文件隐藏属性_第1张图片

你可能感兴趣的:(基础命令,linux,运维,服务器)