文件系统属性chattr权限,也叫不可改变位权限,该权限没有风险,但是他能限制root用户。

1、命令格式

[root@localhost ~]# chattr [+-=] [选项] 文件或目录名

选项

  • +:增加权限。
  • -:删除权限。
  • =:等于某权限。(不常用)
  • i:如果对文件设置i属性,那么不允许对文件进行删除、改名,也不能添加和修改数据(也就是文件不能做任何修改,相当于把文件加了一把锁,包括root在内都不行。);如果对目录设置i属性,那么只能修改目录下文件的数据,但不允许建立和删除文件。
  • a:如果对文件设置a属性,那么只能在文件中增加数据,但是不能删除也不能修改数据;如果对目录设置a属性,那么只允许在目录中建立和修改文件,但是不允许删除。
  • e:Linux中绝大多数的文件都默认拥有e属性。表示该文件是使用ext文件系统进行字储的,而且不能使用chattr -e命令取消e属性。

提示:常用的就是ia属性。

2、查看文件系统属性chattr权限

# 给abc文件加入i属性
[root@localhost ~]# chattr +i abc # ll命令是查看不到任何结果的,这点比较不好。
[root@localhost ~]# ll abc
rw-r--r-.1 root root 0 2月 19 13:08 abc

如果需要查看chattr权限,需要用如下命令:

[rootelocalhost ~]# chattr [选项] 文件名

选项:

  • -a:显示所有文件和目录。
  • -d:若目标是目录,仅列出目录本身的属性,而不是子文件的。
[root@localhost ~]# chattr abc
----i--------e- abc

注意:带~表示临时文件,和Windows系统的word的临时文件差不多一个意思。直接rm删除就可以了。

如下图所示:

3、示例

例1:给文件赋予chattr权限的i属性。

# 建立测试文件,给文件赋予i属性
[root@localhost ~]# touch ftest
[root@localhost ~]# chattr +i ftest # 赋予i属性后,root也不能删除
[root@localhost ~]# rm -rf ftest
rm:无法删除"ftest":不允许的操作 # 也不能修改文件的数据
[root@localhost ~]# echo 111 >> ftest
-bash:ftest:权限不够

例2:给目录赋予chattr权限的i属性。

# 建立测试目录给
[root@localhost ~]# mkdir dtest
# 再建立一个测试文件abc
[root@localhost dtest]# touch dtest/abc
# 给目录赋予i属性
[root@localhost ~]# chattr +i dtest/ # dtest目录不能新建文件
[root@localhost ~]# cd dtest/
[root@localhost dtest] # touch bcd
touch:无法创建"bcd":权限不够 # 但是可以修改文件内容
[root@localhost dtest]# echo 1111 >> abc
[root@localhost dtest]# cat abc
1111 # 不能删除目录内文件
[root@localhost dtest]# rm -rf abc
rm:无法删除"abc":权限不够

例3:测试chattr权限的a属性。

# 给abc文件赋予a属性
[root@localhost ~]# chattr +a abc # 向abc文件中追加内容
# 注意一定不能用vim编辑器,用vim编辑器编辑内容不能保存。
[root@localhost ~]# echo aaaaaaaaaaaaaaaaaaaaaa >> abc
[root@localhost ~]# cat abc
aaaaaaaaaaaaaaaaaaaaaa # 可以复制文件和新建文件到指定目录
[root@localhost ~]# cp /var/log/messages /back/log/ # 但是不允许删除文件
[root@localhost ~]# rm -rf abc
rm:无法删除"/back/1og/messages":不允许的操作

『学了就忘』Linux权限管理 — 56、不可改变位权限(chattr)的更多相关文章

  1. 『学了就忘』Linux基础命令 — 25、文件基本权限的管理

    目录 1.文件和目录的默认权限 2.umask默认权限 (1)查看系统的umask权限 (2)用八进制数值显示umask权限 (3)umask权限的计算方法 (4)注意:umask默认权限的计算绝不是 ...

  2. 『学了就忘』Linux基础命令 — 23、文件基本权限的介绍和作用

    目录 1.基本权限的介绍 (1)权限位的含义 (2)权限的优先级 2.权限的基本作用 (1)权限含义的解释 (2)目录权限说明 1.基本权限的介绍 (1)权限位的含义 前面讲解ls命令时,我们已经知道 ...

  3. 『学了就忘』Linux基础命令 — 24、文件基本权限的相关命令

    目录 1.chmod命令 2.权限模式 (1)用户身份. (2)赋予方式. (3)权限. 3.数字权限 4.文件常用权限 5.chown命令 6.chgrp命令 7.总结 常用基本权限操作命令: ch ...

  4. 『学了就忘』Linux用户管理 — 50、用户管理相关文件详细说明

    目录 1.用户信息文件 2./etc/shadow影子文件 3./etc/group 组信息文件 4.组密码文件 5.用户的家目录 6.用户邮箱目录 7.用户模板目录 总结: 提示:严格的用户权限划分 ...

  5. 『学了就忘』Linux用户管理 — 51、用户管理相关命令

    目录 1.添加用户(useradd命令) 2.设定密码(passwd命令) 3.用户信息修改(usermod命令) 4.删除用户(userdel命令) 5.切换用户身份(su命令) 1.添加用户(us ...

  6. 『学了就忘』Linux服务管理 — 75、Linux系统中的服务

    目录 1.服务的介绍 2.Windows系统中的服务 3.Linux系统中服务的分类 4.独立的服务和基于xinetd服务的区别 5.如何查看一个服务是独立的服务还是基于xinetd的服务 (1)查看 ...

  7. 『学了就忘』Linux日志管理 — 92、日志轮替

    目录 1.日志文件的命名规则 2.logrotate配置文件说明 3.logrotate配置文件的主要参数 1.日志文件的命名规则 日志轮替最主要的作用就是把旧的日志文件移动并改名,同时建立新的空日志 ...

  8. 『学了就忘』Linux日志管理 — 93、日志轮替补充

    目录 1.把自己的日志加入日志轮替 (1)操作方式 (2)示例 2.logrotate命令 1.把自己的日志加入日志轮替 使用RPM包方式安装服务的日志会自动的加入logrotate轮替,一般不需要你 ...

  9. 『学了就忘』Linux软件包管理 — 40、Linux系统软件包介绍

    目录 1.Linux系统软件包分类 2.源码包说明 3.二进制包说明 4.RPM包的优缺点 4.RPM包的两种安装方法 5.总结 1.Linux系统软件包分类 Linux系统下的软件包只有源码包和二进 ...

  10. 『学了就忘』Linux软件包管理 — 42、对RPM软件包的查询操作

    目录 1.查询RPM软件包是否安装 2.查询系统中所有已安装的RPM软件包 3.查询RPM软件包的详细信息 4.查询RPM软件包中的文件列表 5.查询系统文件属于哪个RPM包 6.查询RPM软件包所依 ...

随机推荐

  1. Java(4)运算符及表达式

    作者:季沐测试笔记 原文地址:https://www.cnblogs.com/testero/p/15201675.html 博客主页:https://www.cnblogs.com/testero ...

  2. dubbo注册中心占位符无法解析问题(二)

    dubbo注册中心占位符无法解析问题 前面分析了dubbo注册中心占位符无法解析的问题. 并给出了2种解决办法: 降低mybatis-spring的版本至2.0.1及以下 自定义MapperScann ...

  3. 初学Python-day11 函数4

    函数 1.递归函数 自己不断调用自己的过程 2.递归求和 1 def sum(arg): 2 if arg == 1: 3 return 1 4 return arg + sum(arg - 1) 5 ...

  4. MD支持程度测试

    Editor.md 目录 (Table of Contents) [TOCM] 目录 Editor.md Heading 1 Heading 2 Heading 3 Heading 4 Heading ...

  5. numpy中的nan和常用方法

    1.数组的拼接 import numpy as np t1 = np.array([[0, 1, 2, 3, 4, 5], [6, 7, 8, 9, 10, 11]]) t2 = np.array([ ...

  6. 集合先从ArrayList开始

    本篇文章非常建议直接从经典Demo开始哦~ 一.ArrayList简介 ArrayList 的底层是数组队列,相当于动态数组.与 Java 中的数组相比,它的容量能动态增长.在添加大量元素前,应用程序 ...

  7. Python课程笔记(四)

    1.模块的导入 相当于Java的包或C语言的头文件 (1) import math s = math.sqrt(25) print(s) (2) from math import sqrt s=mat ...

  8. 转:基于 xilinx vivado 的PCIE ip核设置与例程代码详解

    连接:https://blog.csdn.net/u014586651/article/details/103826967#comments

  9. Luogu P1538 迎春舞会之数字舞蹈 | 模拟

    题目链接 大水题,暴力输出,代码应该能看吧...... #include<iostream> #include<cstdio> using namespace std; int ...

  10. sed 替换命令使用

    输入文件不会被修改,sed 只在模式空间中执行替换命令,然后输出模式空间的内容.文本文件 employee.txt 101,John Doe,CEO 102,Jason Smith,IT Manage ...