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