Linux的chattr与lsattr命令介绍
命令lsattr是用来查看文件、目录属性的,命令chattr是用来对其做更改的。与chmod这个命令相比,chmod只是改变文件的读写、执行权限,更底层的属性控制是由chattr来改变的。
chattr命令语法:
chattr [+-=][Asaci][文件或者目录名]
注:+表示增加,-表示减少,=表示设定。
A:增加该属性后,表示文件或者目录的atime将不可修改。
s:增加该属性后,会将数据同步写入磁盘中。
a:增加该属性后,表示只能追加不能删除,非root用户不能设定该属性。
c:增加该属性后,表示自动压缩该文件,读取时会自动解压。
i:增加该属性后,表示文件不能被删除、重命名、设定链接、写入以及新增数据。
注:实际工作中运用的最多的就是两个参数:i和a
举例说明:lsattr
[root@jkkhj ~]# lsattr
-------------e- ./wu.txt
-------------e- ./install.log.syslog
-------------e- ./anaconda-ks.cfg
-------------e- ./install.log
注:e表示ext4或ext3所持人的权限。
[root@jkkhj ~]# chattr +a wu.txt
[root@jkkhj ~]# lsattr
-----a-------e- ./wu.txt
-------------e- ./install.log.syslog
-------------e- ./anaconda-ks.cfg
-------------e- ./install.log
[root@jkkhj ~]# echo '111111' >> wu.txt
[root@jkkhj ~]# cat wu.txt
111111
[root@jkkhj ~]# rm -rf wu.txt
rm: cannot remove `wu.txt': Operation not permitted
[root@jkkhj ~]# echo '2222' > wu.txt
-bash: wu.txt: Operation not permitted
上述中:wu.txt文件增加a权限后,只可以追加,不能重定向及删除!
[root@jkkhj ~]# mkdir shiyan
[root@jkkhj ~]# lsattr
-----a-------e- ./wu.txt
-------------e- ./install.log.syslog
-------------e- ./anaconda-ks.cfg
-------------e- ./install.log
-------------e- ./shiyan
[root@jkkhj ~]# chattr +a shiyan
[root@jkkhj ~]# lsattr
-----a-------e- ./wu.txt
-------------e- ./install.log.syslog
-------------e- ./anaconda-ks.cfg
-------------e- ./install.log
-----a-------e- ./shiyan
[root@jkkhj ~]# touch shiyan/test1
[root@jkkhj ~]# cd shiyan
[root@jkkhj shiyan]# lsattr
-------------e- ./test1
[root@jkkhj shiyan]# rm -rf test1
rm: cannot remove `test1': Operation not permitted
上述中:shiyan目录增加a权限后,只可以在里面创建文件,而不能删除文件!
[root@jkkhj ~]# chattr -a shiyan
[root@jkkhj ~]# chattr -a wu.txt
[root@jkkhj ~]# ls
anaconda-ks.cfg install.log install.log.syslog shiyan wu.txt
[root@jkkhj ~]# lsattr
-------------e- ./wu.txt
-------------e- ./install.log.syslog
-------------e- ./anaconda-ks.cfg
-------------e- ./install.log
-------------e- ./shiyan
[root@jkkhj ~]# chattr +i wu.txt
[root@jkkhj ~]# lsattr wu.txt
----i--------e- wu.txt
[root@jkkhj ~]# echo 'nihao' >> wu.txt
-bash: wu.txt: Permission denied
[root@jkkhj ~]# echo 'nihao' > wu.txt
-bash: wu.txt: Permission denied
[root@jkkhj ~]# rm -rf wu.txt
rm: cannot remove `wu.txt': Operation not permitted
上述中:给wu.txt增加i权限之后,文件即使在root账户下也不能进行追加、重定向、删除等操作!
[root@jkkhj ~]# lsattr
----i--------e- ./wu.txt
-------------e- ./install.log.syslog
-------------e- ./anaconda-ks.cfg
-------------e- ./install.log
----i--------e- ./shiyan
[root@jkkhj ~]# touch shiyan/test2
touch: cannot touch `shiyan/test2': Permission denied
[root@jkkhj ~]# rm -rf shiyan
rm: cannot remove `shiyan/test1': Permission denied
上述中:给shiyan目录增加i权限之后,即使在root账户下也不能在shiyan目录下创建文件test1及删除shiyan这个目录等操作!
[root@jkkhj ~]# chattr -i shiyan
[root@jkkhj ~]# chattr -i wu.txt
[root@jkkhj ~]# lsattr
-------------e- ./wu.txt
-------------e- ./install.log.syslog
-------------e- ./anaconda-ks.cfg
-------------e- ./install.log
-------------e- ./shiyan
[root@jkkhj ~]# rm -rf shiyan;rm -rf wu.txt
[root@jkkhj ~]# lsattr
-------------e- ./install.log.syslog
-------------e- ./anaconda-ks.cfg
-------------e- ./install.log