• linux系统中的文件隐藏权限、chattr命令及lsattr命令


    linux系统中文件除了具备一般权限和特殊权限外,还有一种隐藏权限,即被隐藏起来的权限

    chattr命令用于增减文件和目录的隐藏权限

    1、 chattr -i 选项 不能删除文件、不能对文件进行修改

    [root@linuxprobe home]# whoami
    root
    [root@linuxprobe home]# mkdir test
    [root@linuxprobe home]# chmod 777 test/
    [root@linuxprobe home]# touch a.txt
    [root@linuxprobe home]# chmod 777 a.txt
    [root@linuxprobe home]# rm -f a.txt  ## 没有 +i隐藏全选,可以直接删除
    [root@linuxprobe home]# touch b.txt
    [root@linuxprobe home]# chmod 777 b.txt
    [root@linuxprobe home]# chattr +i b.txt  ## 加 +i 隐藏权限
    [root@linuxprobe home]# rm -f b.txt  ## 不能删除
    rm: cannot remove ‘b.txt’: Operation not permitted
    [root@linuxprobe home]# lsattr b.txt  ## 查看隐藏权限
    ----i----------- b.txt
    [root@linuxprobe home]# chattr -i b.txt  ## 减去隐藏权限
    [root@linuxprobe home]# lsattr b.txt
    ---------------- b.txt
    [root@linuxprobe home]# rm -f b.txt  ## 可以删除

    chattr +i 文件,不能对文件进行修改

    [root@linuxprobe test]# ls
    [root@linuxprobe test]# seq 5 > a.txt ## 测试数据
    [root@linuxprobe test]# lsattr a.txt
    ---------------- a.txt
    [root@linuxprobe test]# cat a.txt
    1
    2
    3
    4
    5
    [root@linuxprobe test]# echo "xxxxx" >> a.txt  ## 可以正常修改
    [root@linuxprobe test]# cat a.txt
    1
    2
    3
    4
    5
    xxxxx
    [root@linuxprobe test]# chattr +i a.txt  ##  添加隐藏权限
    [root@linuxprobe test]# lsattr a.txt
    ----i----------- a.txt
    [root@linuxprobe test]# echo "yyyyy" >> a.txt  ## 不能修改文件内容
    -bash: a.txt: Permission denied
    [root@linuxprobe test]# chattr -i a.txt  ## 减去隐藏权限
    [root@linuxprobe test]# lsattr a.txt
    ---------------- a.txt
    [root@linuxprobe test]# echo "yyyyy" >> a.txt  ##可以对文件进行修改
    [root@linuxprobe test]# cat a.txt
    1
    2
    3
    4
    5
    xxxxx
    yyyyy

    chattr +i 目录,可以修改其中的文件,不能新建文件、目录,不能删除文件目录

    [root@linuxprobe test]# mkdir -p test01/dir01  
    [root@linuxprobe test]# mkdir -p test02/dir02
    [root@linuxprobe test]# touch test01/a.txt
    [root@linuxprobe test]# touch test02/b.txt
    [root@linuxprobe test]# chmod -R 777 *
    [root@linuxprobe test]# tree  ## 测试目录、数据
    .
    ├── test01
    │   ├── a.txt
    │   └── dir01
    └── test02
        ├── b.txt
        └── dir02
    
    4 directories, 2 files
    [root@linuxprobe test]# echo "xxxxx" > test01/a.txt  ## 可以修改文件
    [root@linuxprobe test]# touch test01/c.txt  ## 可以创建文件
    [root@linuxprobe test]# rm -f test01/a.txt  ## 可以删除文件
    [root@linuxprobe test]# rm -rf test01/dir01/ ## 可以删除目录
    [root@linuxprobe test]# lsattr -d test01  ## 查看隐藏权限
    ---------------- test01
    [root@linuxprobe test]# chattr +i test02  ## 增加隐藏权限
    [root@linuxprobe test]# lsattr -d test02  ## 查看隐藏权限
    ----i----------- test02
    [root@linuxprobe test]# echo "xxxxxx" > test02/b.txt  ## 可以修改文件内容
    [root@linuxprobe test]# touch test02/d.txt  ## 不能创建新文件
    touch: cannot touch ‘test02/d.txt’: Permission denied
    [root@linuxprobe test]# rm -f test02/b.txt  ## 不能删除文件
    rm: cannot remove ‘test02/b.txt’: Permission denied
    [root@linuxprobe test]# rm -rf test02/dir02/  ## 不能删除目录
    rm: cannot remove ‘test02/dir02/’: Permission denied

    2、 chattr +a  仅能够追加内容,不能覆盖和删除内容(常用于日志文件)

    [root@linuxprobe test]# ls
    [root@linuxprobe test]# seq 4 > a.txt
    [root@linuxprobe test]# chmod 777 a.txt
    [root@linuxprobe test]# ll
    total 4
    -rwxrwxrwx. 1 root root 8 Oct 20 23:51 a.txt
    [root@linuxprobe test]# chattr +a a.txt  ## 增加隐藏权限
    [root@linuxprobe test]# lsattr a.txt
    -----a---------- a.txt
    [root@linuxprobe test]# echo "xxxxx" > a.txt  ## 不能够覆盖
    -bash: a.txt: Operation not permitted
    [root@linuxprobe test]# echo "xxxxx" >> a.txt  ## 可以追加
    [root@linuxprobe test]# rm -f a.txt  ## 不能删除
    rm: cannot remove ‘a.txt’: Operation not permitted
    [root@linuxprobe test]# chattr -a a.txt
    [root@linuxprobe test]# lsattr a.txt
    ---------------- a.txt
    [root@linuxprobe test]# echo "xxxxx" > a.txt
    [root@linuxprobe test]# echo "xxxxx" >> a.txt
    [root@linuxprobe test]# rm -f a.txt
  • 相关阅读:
    ASP.NET 2.0 解决了 CodeBehind 需要控件声明同步的问题
    Script# 把 C# 编译为 JavaScript
    我不懂 ASP.NET
    ASP.NET 是如何让 aspx 完全编译的呢?
    ASP.NET 设计优秀之处
    .NET 的灵魂是什么?
    初次使用Atlas JavaScript (Part 2 Web Service扩展)
    XNA Microsoft 平台的新游戏框架
    ViewState ASP.NET 的一个特有存储容器
    2 Ways Thinking In Ajax
  • 原文地址:https://www.cnblogs.com/liujiaxin2018/p/13849933.html
Copyright © 2020-2023  润新知