每日linux命令学习-lsattr和chattr

lsattr和chattr命令

 

1. lsattr命令

作用:

显示文件属性

语法:

lsattr [-adlRvV][files...]

参数

  • -a  显示所有文件和目录(包括隐藏文件)的属性。
  • -d  只显示指定文件或目录(不包括目录下的文件或子目录)的属性。
  • -l  此参数目前没有任何作用。
  • -R  递归处理,将指定目录下的所有文件及子目录一并处理。
  • -v  显示文件或目录版本。
  • -V  显示版本信息。

 

2. chattr命令

作用:

改变文件或目录的属性

说明:

与chmod命令相比,chmod只是改变文件的读写、执行权限,更底层的属性控制是由chattr来改变的。

语法:

chattr [ -RVf ] [ -v version ] [ mode ] [ files… ]
最关键的是在[mode]部分,[mode]部分是由+-=和[ASacDdIijsTtu]这些字符组合的,用来控制文件的属性。

参数

  • -R 递归地修改文件夹和子文件夹的属性。
  • -V chattr命令会输出带有版本信息的冗余信息。
  • -f 忽略大部分错误信息。
  • -v 设置文件或目录的版本。
  • + :在原有参数设定基础上,追加参数。
  • - :在原有参数设定基础上,移除参数。
  • = :更新为指定参数设定。
  • A :文件或目录的 atime (access time)不可被修改(modified), 可以有效预防例如手提电脑磁盘I/O错误的发生。
  • S :硬盘I/O同步选项,功能类似sync。
  • a :即append,设定该参数后,只能向文件中添加数据,而不能删除,多用于服务器日志文件安全,只有root才能设定这个属性。
  • c :即compresse,设定文件是否经压缩后再存储,读取时需要经过自动解压操作。
  • d :即no dump,设定文件不能成为dump程序的备份目标。
  • i :设定文件不能被删除、改名、设定链接关系,同时不能写入或新增内容,对于文件 系统的安全设置有很大帮助。
  • j :即journal,设定此参数使得当通过mount参数:data=ordered 或者 data=writeback 挂 载的文件系统,文件在写入时会先被记录(在journal中)。如果filesystem被设定参数为 data=journal,则该参数自动失效。
  • s :保密性地删除文件或目录,即硬盘空间被全部收回。
  • u :与s相反,当设定为u时,数据内容其实还存在磁盘中,可以用于undeletion。

 注意:各参数选项中常用到的是a和i。a选项强制只可添加不可删除,多用于日志系统的安全设定。而i是更为严格的安全设定,只有superuser (root) 或具有CAP_LINUX_IMMUTABLE处理能力(标识)的进程能够施加该选项。

 

 

3. 示例

例:1 使用‘i’属性使文件不可更改

  1. [root@linuxtechi ~]# chattr +i dummy_data
  2. [root@linuxtechi ~]# lsattr dummy_data
  3. ----i----------- dummy_data

现在试着删除或者修改文件

  1. [root@linuxtechi ~]# rm -f dummy_data
  2. rm: cannot remove 'dummy_data': Operation not permitted
  3. [root@linuxtechi ~]# echo "test" >> dummy_data
  4. -bash: dummy_data: Permission denied

例:2 移除不可更改属性

  1. [root@linuxtechi ~]# chattr -i dummy_data
  2. [root@linuxtechi ~]# lsattr dummy_data
  3. ---------------- dummy_data

例:3 在文件中只允许追加操作

  1. [root@linuxtechi ~]# chattr +a dummy_data
  2. [root@linuxtechi ~]# lsattr dummy_data
  3. -----a---------- dummy_data

现在试着把fstab文件的内容追加到dummy_data文件

  1. [root@linuxtechi ~]# cat /etc/fstab >> dummy_data
  2. [root@linuxtechi ~]#

例 :4 使用 -R 选项和 ‘+i’ 属性使文件夹和它的子文件夹成为安全目录

让我们来新建一个sysadmin文件夹和它的子文件夹

  1. [root@linuxtechi ~]# mkdir sysadmin
  2. [root@linuxtechi ~]# mkdir sysadmin/admim_{1,2,3,4,5}
  3. [root@linuxtechi ~]# ls -l sysadmin/
  4. total 0
  5. drwxr-xr-x. 2 root root 6 Apr 19 09:50 admim_1
  6. drwxr-xr-x. 2 root root 6 Apr 19 09:50 admim_2
  7. drwxr-xr-x. 2 root root 6 Apr 19 09:50 admim_3
  8. drwxr-xr-x. 2 root root 6 Apr 19 09:50 admim_4
  9. drwxr-xr-x. 2 root root 6 Apr 19 09:50 admim_5

在sysadmin文件夹递归设置不可更改属性

  1. [root@linuxtechi ~]# chattr -R +i sysadmin
  2. [root@linuxtechi ~]# lsattr -R sysadmin/
  3. ----i----------- sysadmin/admim_1
  4. sysadmin/admim_1:
  5. ----i----------- sysadmin/admim_2
  6. sysadmin/admim_2:
  7. ----i----------- sysadmin/admim_3
  8. sysadmin/admim_3:
  9. ----i----------- sysadmin/admim_4
  10. sysadmin/admim_4:
  11. ----i----------- sysadmin/admim_5
  12. sysadmin/admim_5:
  13. [root@linuxtechi ~]#

现在试着用rm命令删除文件夹

  1. [root@linuxtechi ~]# rm -rf sysadmin
  2. rm: cannot remove sysadmin/admim_1’: Permission denied
  3. rm: cannot remove sysadmin/admim_2’: Permission denied
  4. rm: cannot remove sysadmin/admim_3’: Permission denied
  5. rm: cannot remove sysadmin/admim_4’: Permission denied
  6. rm: cannot remove sysadmin/admim_5’: Permission denied
  7. [root@linuxtechi ~]#

使用以下命令递归取消属性

  1. [root@linuxtechi ~]# chattr -R -i sysadmin
 
posted @ 2015-11-03 11:57  YY&BB姐姐的光阴故事  阅读(220)  评论(0编辑  收藏  举报