在Linux下创建写保护的文件的教程

假如你想对Linux中的一些重要文件做写保护,这样它们就不能被删除或者被篡改成之前的版本或者其他东西,或者在其他情况下,你可能想避免某些配置文件被软件自动修改。使用chown和chmod命令修改文件的归属关系或者权限位是处理这种情况的一个解决方法,但这并不完美,因为这样无法避免有root权限的操作。这时chattr就派上用场了。

chattr是一个可以设置或取消文件的标志位的Linux命令,它和标准的文件权限(读、写、执行)是分离的。与此相关的另一个命令是lsattr,它可以显示文件的哪些标志位被设置上了。最初只有EXT文件系统(EXT2/3/4)支持chattr和lsattr所管理的标志位,但现在很多其他的原生的Linux文件系统都支持了,比如XFS、Btrfs、ReiserFS等等。

在这个教程中,我会示范如果使用chattr来让Linux中的文件不可变更。

chattr和lsattr命令是e2fsprogs包的一部分,它在所有现代Linux发行版都预装了。

下面是chattr的基本语法。

$ chattr [-RVf] [操作符][标志位] 文件...

其中操作符可以是“+”(把选定的标志位添加到标志位列表)、“-”(从标志位列表中移除选定的标志位)、或者“=”(强制使用选定的标志位)。

下面是一些可用的标志位。

a: 只能以追加模式打开。

A: 不能更新atime(文件访问时间)。

c: 当被写入磁盘时被自动压缩。

C: 关掉“写时复制”。

i: 不可变更。

s: 通过自动归零来安全删除。(LCTT 译注:一般情况文件被删后内容不会被修改,改标志位会使得文件被删后原有内容被“0”取代)

“不可变更”标志位

为了让一个文件不可变更,你需要按照如下方法为这个文件添加“不可变更”标志位。例如,对/etc/passwd文件做写保护:

代码如下:

$ sudo chattr +i /etc/passwd

注意设置或取消一个文件的“不可变更”标志位是需要root用户权限的。现在检查该文件“不可变更”标志位是否被添加上了。

代码如下:

$ lsattr /etc/passwd

一旦文件被设置为不可变更,任何用户都将无法修改该文件。即使是root用户也不可以修改、删除、覆盖、移动或者重命名这个文件。如果你想再次修改这个文件,需要先把“不可变更”标志位取消了。

用如下命令取消“不可变更”标志位:

代码如下:

$ sudo chattr -i /etc/passwd



如果你想让一个目录(比如/etc)连同它下边的所有内容不可变更,使用“-R”选项:

代码如下:

$ sudo chattr -R +i /etc

“只可追加”标志位

另一个有用的的标志位是“只可追加”,它只允许文件内容被追加的方式修改。你不能覆盖或者删除一个设置了“只可追加”标志位的文件。这个标志位在你想避免日志文件被意外清理掉的情况很有用。

和“不可变更”标志位类似,你可以使用如下命令让文件变成“只可追加”模式:

代码如下:

$ sudo chattr +a /var/log/syslog

注意当你复制一个“不可变更”或者“只可追加”的文件到其他地方后,新文件不会保留这些标志位!

结论

在这个教程中,我展示了如何使用chattr和lsattr命令来管理额外的文件标志位,来避免文件被篡改(意外或者其他情况)的方法。注意你不能将chattr作为一个安全措施,因为“不可变更”标志位可以很容易被取消掉。解决这个问题的一个可能的方式是限制chattr命令自身的可用性,或者去掉CAPLINUXIMMUTABLE内核权能标志。关于chattr以及可用的标志位的更多细节,请参考它的man手册。

(0)

相关推荐

  • 如何在linux下编辑和修改文件:

    我们在linux下有很多的地方,需要使用和修改文件,这里我们介绍的是,linux的自带的工具vi文本编辑工具.这个是很强大的一个工具. 我们在linux下主要使用的是这个工具.这里小编,就来介绍一下, ...

  • windows10系统下创建无法删除文件夹的方法

    windows10系统下创建无法删除文件夹的方法 步骤如下: 1.按下"Win+R"组合键打开运行,在运行框中输入:cmd 点击确定打开命令提示符; 2.比如我们要在D盘创建一个无 ...

  • Linux下自动清理大量文件的方案探究

    定期清理过期文件和垃圾文件,维持文件系统合理的空间使用率,是一个系统管理员的日常工作.对于中小规模文件系统而言,简单的系统命令或者脚本都就可以实现;但是对于拥有数亿甚至数十亿数文件的大型.超大型文件系 ...

  • 如何使用ln命令在linux下创建快捷方式

    在windows下可以右键创建快捷方式,在linux我们该如何生成快捷方式,我们使用ln命令生成快捷方式. 操作方法 01 使用"ln --help"命令可以查看ln命令的帮助文档 ...

  • linux下怎么样重命名文件?linux下修改文件名称

    linux系统里面没有单独用来修改文件名称的命令 所以我们如果想要对文件夹重新改一个名称的花比较麻烦: 但是linux下有mv命令:也就是移动文件的命令 下面我们要介绍一下怎么样在linux下修改文件 ...

  • Linux下删除大数据文件中部分字段重复行的方法

    最近写的一个数据采集程序生成了一个含有1千多万行数据的文件,数据由4个字段组成,按照要求需要删除第二个字段重复的行,找来找去linux下也没找到合适的工具,sed/gawk等流处理工具只能针对一行一行 ...

  • Linux下快速批量修改文件夹下的图片名称的方法

    我们都知道,要修改文件夹下的图片名称很容易,但是要批量修改就比较浪费时间了,那么有什么方法能够快速批量修改图片名称呢?下面小编就给大家介绍下Linux下快速批量修改图片名称的方法。 如10.11一批这 ...

  • Linux下定时删除过期文件的方法

    在linux下删除过期文件,很简单,用如下命令: 复制代码 代码如下: find /var/www/ -type f -mtime +30 -exec rm -f '{} /;' 以上命令删除30天以 ...

  • 在Linux下创建分区和文件系统的方法详解

    在 Linux 中创建分区或新的文件系统通常意味着一件事:安装 Gnome Parted 分区编辑器(GParted).对于大多数 Linux 用户而言,这是唯一的办法.不过,你是否考虑过在终端创建这 ...