在Linux中用chattr和lsattr命令管理文件和目录属性

为了允许添加数据,防止更改或者删除等,文件和文件夹可以设定了特定的控制属性。例如,你可以在关键的系统文件或者文件夹中启用属性,然后没有任何用户,包括root,可以删除或者修改它,比如不允许使用像dump这样的命令等备份工具去备份一个特定的文件或者文件夹,等等。这些属性只可以在ext2,ext3或者ext4文件系统中的文件和文件夹上设定。

有两个命令 lsattr 和 chattr 用来管理属性。下面是常用属性的列表。


属性


描述


a (append)


允许在文件中进行追加操作


A


这个属性不允许更新文件的访问时间


c (compressed)


启用这个属性时,文件在磁盘上会自动压缩


d (dump)


不能使用dump命令备份文件


D


设置了文件夹的D属性时,更改会在同步保存在磁盘上


e (extent format)


它表明,该文件使用磁盘上的块的映射扩展


i (immutable)


在文件上启用这个属性时,我们不能更改、重命名或者删除这个文件


j (journaling)


设置了这个属性时,文件的数据首先保存在日志中,然后再写入文件


S (synchronous)


设置了这个属性时,变更或更改同步保存到磁盘上

chattr属性中可以使用的不同选项 :

  • -R 递归地修改文件夹和子文件夹的属性
  • -V chattr命令会输出带有版本信息的冗余信息
  • -f 忽略大部分错误信息

在chattr中用于设置或者取消属性的 操作符

  • '+' 符号用来为文件和文件夹设置属性,
  • '-' 符号用来移除或者取消属性
  • '=' 使它们成为文件有的唯一属性。

chattr 和 lsattr 命令的基本语法 :


  1. # chattr <options> <attributes> <file or Directory >
  2. # lsattr <File or Directory>

例: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


原文发布时间为:2015-06-09

本文来自合作伙伴“Linux中国”

时间: 2024-09-02 08:11:02

在Linux中用chattr和lsattr命令管理文件和目录属性的相关文章

Linux的chattr与lsattr命令

某个文件,强制删除不了,改文件权限也改不了 chmod 777 ".user.ini" set attrs for /home/wwwroot/www.fangbei.org/.user.ini: permission denied rm "/home/wwwroot/www.fangbei.org/.user.ini" rm /home/wwwroot/www.fangbei.org/.user.ini: permission denied 当然如是出现上述的问题

浅谈Linux中的chattr与lsattr命令_Linux

PS:有时候你发现用root权限都不能修改某个文件,大部分原因是曾经用chattr命令锁定该文件了.chattr命令的作用很大,其中一些功能是由Linux内核版本来支持的,不过现在生产绝大部分跑的linux系统都是2.6以上内核了.通过chattr命令修改属性能够提高系统的安全性,但是它并不适合所有的目录.chattr命令不能保护/./dev./tmp./var目录.lsattr命令是显示chattr命令设置的文件属性. 这两个命令是用来查看和改变文件.目录属性的,与chmod这个命令相比,ch

Linux 命令(文件和目录管理 - tree)

简述 使用 tree 命令以树状图递归的形式显示各级目录,可以方便地看到目录结构. 简述 安装 tree 命令 命令介绍 命令选项 使用范例 安装 tree 命令 大部分 Linux 中默认没有安装 tree 命令,以 CentOS 7.x 为例: [wang@localhost ~]$ tree bash: tree: 未找到命令... 切换至 root,进行安装: [root@localhost ~]# yum install tree 命令介绍 命令名称 tree 基本语法 tree [-

Linux基础:如何在命令行中查看目录的大小

Linux基础:如何在命令行中查看目录的大小 这是写给Liunx新用户的一系列文章中的第一篇,在这系列文章我将会写一些对新用户来说非常好用的Linux基础命令. 注意:本文的目标读者是仅有小量甚至是没有任何Linux命令行使用经验的读者. 作为一个Linux的新用户,我怎样可以在命令行终端中查看某个目录的属性? 要求 唯一的要求是du命令行工具.du基本上是所有Linux发行版本默认提供的工具.用以下的命令来检查你的系统中是否可以使用du命令: man du du 命令用于输出文件的空间使用情况

使用ASP.NET程序来管理文件或目录的一种方案

asp.net|程序 使用ASP.NET程序来管理文件或目录有多种方法,比如Directory.CreateDirectory,DirectoryInfo.Create等方法来创建一个目录,但今天我们来介绍另外一种比较另类的创建目录的方法,就是使用cmd的命令方式来管理. 在用过DOS命令的人都知道DOS命令可以做很多事,比如dir可以列举目录下的文件和子目录.这次,我们就是用ASP.NET程序来调用cmd的命令来管理文件. 下面是一段调用cmd.exe的方法: public bool cmd(

Linux 命令(文件和目录管理 - pwd)

简述 目录是 Linux 的基本组成部分,目录管理包括目录的复制.删除.修改等操操作. 在 Linux 层次结构中,想要知道当前所处的目录,可以用 pwd 命令,该命令输出当前工作目录的完整名称.环境变量 OLDPWD 表示前一次的工作目录,环境变量 PWD 表示当前的工作目录. 简述 命令介绍 命令选项 使用范例 命令介绍 命令名称 pwd 命令全称 Print Working Directory 基本语法 pwd [选项]- 功能描述 打印当前工作目录的完整文件名 命令选项 pwd 命令比较

Centos中chattr和lsattr命令使用详解

chattr命令的用法: chattr [+-=][ASacdistu] [档案或目录名称] 参数说明: +-= :分别为 [+ 增加] [- 减少] [= 设定] 属性的意思 A :当设定了 A 这个属性时,这个档案(或目录)的存取时间 atime (access) 将不可被修改, 可避免例如手提式计算机容易有磁盘 I/O 错误的情况发生! S :这个功能有点类似 sync 的功能!就是会将数据同步写入磁盘当中!可以有效的避免数据流失! a :当设定 a 之后,这个档案将只能增加数据,而不能删

Linux 命令(文件和目录管理 - zip/unzip)

简述 zip/unzip 是 Linux 中广泛使用的压缩/解压缩程序zip 命令用来将文件压缩为常用的 zip 格式扩展名为 .zipunzip 命令则用来解压缩 zip 文件. 简述 zip 命令介绍 命令选项 使用范例 unzip 命令介绍 命令选项 使用范例 zip 命令介绍 命令名称 zip 基本语法 zip [-aABcdDeEfFghjklLmoqrRSTuvVwXyz!@$] [--longoption ...] [-b path] [-n suffixes] [-t date]

Linux 命令(文件和目录管理 - gzip/gunzip)

简述 和 zip 命令类似,gzip 用于文件的压缩,gzip 压缩后的文件扩展名位 .gz,gzip 默认压缩后会删除原文件.gunzip 用于解压经过 gzip 压缩过的文件. 简述 gzip 命令介绍 命令选项 使用范例 gunzip 命令介绍 命令选项 使用范例 gzip 命令介绍 命令名称 gzip 基本语法 gzip [OPTION]- [FILE]- 功能描述 压缩文件.压缩后的文件扩展名位 .gz,默认压缩后会删除原文件. 命令选项 选项 说明 -a --ascii 使用 ASC