• linux下使用chattr创建一个连root都无法删除的文件


    一.关于chattr,lsattr

    1.chattr 的作用:改变一个Linux文件系统上的文件属性。

    2.chattr用来改变文件、目录的属性,lsattr用来查看文件、目录的属性。

    3.chattr语法为:chattr [ -RVf ] [ -v version ] [ mode ] files…,最关键的是在[mode]部分,[mode]部分是由+-=和[ASacDdIijsTtu]这些字

    符组合的,这部分是用来控制文件的属性。常见参数如下:

    + :在原有参数设定基础上,追加参数。
    - :在原有参数设定基础上,移除参数。
    = :更新为指定参数设定。
    
    A:即Atime,告诉系统不要修改对这个文件的最后访问时间。
    S:即Sync,一旦应用程序对这个文件执行了写操作,使系统立刻把修改的结果写到磁盘。
    a:即Append Only,系统只允许在这个文件之后追加数据,不允许任何进程覆盖或截断这个文件。如果目录具有这个属性,系统将只允许在这个目录下建立和修改文件,而不允许删除任何文件。
    b:不更新文件或目录的最后存取时间。
    c:将文件或目录压缩后存放。
    d:当dump程序执行时,该文件或目录不会被dump备份。
    D:检查压缩文件中的错误。
    i:即Immutable,系统不允许对这个文件进行任何的修改。如果目录具有这个属性,那么任何的进程只能修改目录之下的文件,不允许建立和删除文件。
    s:彻底删除文件,不可恢复,因为是从磁盘上删除,然后用0填充文件所在区域。
    u:当一个应用程序请求删除这个文件,系统会保留其数据块以便以后能够恢复删除这个文件,用来防止意外删除文件或目录。
    t:文件系统支持尾部合并(tail-merging)。
    X:可以直接访问压缩文件的内容。
    

    二.创建一个连root都无法删除的文件

    [root@node5 ~]# ll linuxshell.sh 
    -rw-r--r-- 1 root root 181 Oct 12 11:57 linuxshell.sh
    [root@node5 ~]# chattr +i linuxshell.sh 
    [root@node5 ~]# ll linuxshell.sh 
    -rw-r--r-- 1 root root 181 Oct 12 11:57 linuxshell.sh
    [root@node5 ~]# rm -rf linuxshell.sh 
    rm: cannot remove ‘linuxshell.sh’: Operation not permitted
    
    [root@node5 ~]# lsattr linuxshell.sh 
    ----i----------- linuxshell.sh
    [root@node5 ~]# chattr -i linuxshell.sh 
    
    [root@node5 ~]# lsattr linuxshell.sh 
    ---------------- linuxshell.sh
    [root@node5 ~]# rm -rf linuxshell.sh 
    
    [root@node5 ~]# chattr +a lll.sh 
    [root@node5 ~]# lsattr lll.sh 
    -----a---------- lll.sh
    [root@node5 ~]# echo aaa >> lll.sh 
    [root@node5 ~]# rm -rf lll.sh 
    rm: cannot remove ‘lll.sh’: Operation not permitted
    [root@node5 ~]# chattr -a lll.sh 
    [root@node5 ~]# lsattr lll.sh 
    ---------------- lll.sh
    [root@node5 ~]# rm -rf lll.sh 
    

    参考链接:http://www.ha97.com/5172.html

  • 相关阅读:
    UIGestureRecognizer在多层视图中的触发问题
    mysql出现Waiting for table metadata lock的原因及解决方案
    SQL逆向工程
    自己总结的ruby on rails 查询方法
    hdu 1536 SG函数模板题
    spring 源码分析之BeanPostProcessor
    spring bean生命周期管理--转
    java.lang.Long cannot be cast to java.lang.Integer解决办法
    Mybatis之Oracle增删查改示例--转
    Anti-If: The missing patterns--转
  • 原文地址:https://www.cnblogs.com/renshengdezheli/p/13954083.html
Copyright © 2020-2023  润新知