chattr和lsattr

chattr

命令简介:

  • linux下有一文件或目录,但你不想让别人修改、删除或只允许添加,在这时候我们就可以用这一对命令了。

  • 命令适用于ext2及以上的文件系统,我们可以将文件设置为不可修改。某些文件属性可帮助我们将文件设置不可修改。一旦文件被设置为不可修改,任何用户包括超级用户都不能删除该文件,除非其不可修改的属性被移除。

  • 虽然通过修改属性能够提高系统的安全性,但是它并不适合所有的目录。chattr命令不能保护/、/dev、/tmp、/var目录。 lsattr比较简单,只是显示文件的属性

语   法:chattr [-RV][-v<版本编号>][+/-/=<属性>][文件或目录...]
选   项:
-R 递归处理,将指定目录下的所有文件及子目录一并处理。

+ :在原有参数设定基础上,追加参数。
- :在原有参数设定基础上,移除参数。
= :更新为指定参数设定。

  • a:  a:即append,设定该参数后,只能向文件中添加数据,而不能删除,多用于服务器日志文件安全,只有root才能设定这个属性。

  • A:文件或目录的 atime (access time)不可被修改, 可以有效预防磁盘I/O错误的发生。 (锁定文件或目录的atime)

  •  c:将文件或目录压缩后存放。读取时需要经过自动解压操作。

  •  d:即no dump,设定文件不能成为dump程序的备份目标。

  •  i:不得任意更动文件或目录。(文件不能被删除、改名、设定链接关系,同时不能写入或新增内容。i 参数对于文件系统的安全设置有很大帮助。)

  •  s:保密性删除文件或目录,即硬盘空间被全部收回。

  •  S:即时更新文件或目录。(硬盘I/O同步选项,功能类似sync。)

  •  u:预防以外删除。

  •  j:即journal,设定此参数使得当通过mount参数:data=ordered 或者 data=writeback 挂 载的文件系统,文件在写入时会先被记录(在journal中)。如果filesystem被设定参数为 data=journal,则该参数自动失效。

lsattr

命令简介:
查看文件的特殊权限
选项:
-a:查看目录下所有文件,包括隐藏文件
-d:只查看指定文件的属性

lsattr和chattr的基本用法

1、使文件或的atime不改变

    [root@VM_18_121_centos ~]# tree qin/
    qin/
    |-- qzx
    `-- qzxa  
    [root@VM_18_121_centos ~]# stat qin
      File: 'qin'
      Size: 4096          Blocks: 8          IO Block: 4096   directory
    Device: fd01h/64769d    Inode: 131108      Links: 2
    Access: (0775/drwxrwxr-x)  Uid: (    0/    root)   Gid: (    0/    root)
    Access: 2016-07-29 10:45:02.976357931 +0800  原本的atime
    Modify: 2016-07-31 13:47:58.191624346 +0800
    Change: 2016-07-31 14:43:45.403725048 +0800
     Birth: -

可以看出目录qin下有两个文件,文件qin的源属性
给qin加上A选项让qin及qin下的文件的atime不改变

    [root@VM_18_121_centos ~]# chattr -R +A qin
    [root@VM_18_121_centos ~]# lsattr qin
    -------A-------- qin/qzx
    -------A-------- qin/qzxa
    [root@VM_18_121_centos ~]# stat qin/qzx       
      File: 'qin/qzx'
      Size: 0             Blocks: 0          IO Block: 4096   regular empty file
    Device: fd01h/64769d    Inode: 131109      Links: 1
    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
    Access: 2016-07-31 13:43:06.725964958 +0800  原本的atime
    Modify: 2016-07-31 13:43:06.725964958 +0800
    Change: 2016-07-31 14:44:51.181936152 +0800
     Birth: -
    [root@VM_18_121_centos ~]# echo qazx > qin/qzx
    [root@VM_18_121_centos ~]# stat qin 
      File: 'qin'
      Size: 4096          Blocks: 8          IO Block: 4096   directory
    Device: fd01h/64769d    Inode: 131108      Links: 2
    Access: (0775/drwxrwxr-x)  Uid: (    0/    root)   Gid: (    0/    root)
    Access: 2016-07-29 10:45:02.976357931 +0800 改过后的atime
    Modify: 2016-07-31 13:47:58.191624346 +0800
    Change: 2016-07-31 14:44:51.181936152 +0800
     Birth: -
    [root@VM_18_121_centos ~]# stat qin/qzx
      File: 'qin/qzx'
      Size: 5             Blocks: 8          IO Block: 4096   regular file
    Device: fd01h/64769d    Inode: 131109      Links: 1
    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
    Access: 2016-07-31 13:43:06.725964958 +0800 改过后的atime
    Modify: 2016-07-31 14:46:41.278406759 +0800
    Change: 2016-07-31 14:46:41.278406759 +0800
     Birth: -

2、用chattr +i防止系统中某个关键文件被修改添加或删除

    [root@VM_18_121_centos ~]# chattr -R +i qin
    [root@VM_18_121_centos ~]# lsattr qin/
    ----i----------- qin/qzx
    ----i----------- qin/qzxa
    [root@VM_18_121_centos ~]# echo qweqwww > qin/qzx 
    -bash: qin/qzx: Permission denied
    [root@VM_18_121_centos ~]# touch qin/qwer
    touch: cannot touch 'qin/qwer': Permission denied
    [root@VM_18_121_centos ~]# rm -rf qin/*  
    rm: cannot remove 'qin/qzx': Permission denied
    rm: cannot remove 'qin/qzxa': Permission denied

3、让某个文件只能往里面追加数据,但不能删除,适用于各种日志文件:

    [root@VM_18_121_centos ~]# chattr -R +a qin
    [root@VM_18_121_centos ~]# lsattr qin/
    -----a---------- qin/qzx
    -----a---------- qin/qzxa
    [root@VM_18_121_centos ~]# echo eawdqwdq > qin/qzx
    -bash: qin/qzx: Operation not permitted
    [root@VM_18_121_centos ~]# echo eawdqwdq >> qin/qzx
    [root@VM_18_121_centos ~]# rm -rf qin/qzx
    rm: cannot remove 'qin/qzx': Operation not permitted