如何在Linux下创建一个不可变更的文件
2015-05-19 11:28
507 查看
假如你想对Linux中的一些重要文件做写保护,这样它们就不能被删除或者被篡改成之前的版本或者其他东西,或者在其他情况下,你可能想避免某些配置文件被软件自动修改。使用
在这个教程中,我会示范如果使用
下面是
其中操作符可以是“+”(把选定的标志位添加到标志位列表)、“-”(从标志位列表中移除选定的标志位)、或者“=”(强制使用选定的标志位)。
下面是一些可用的标志位。
a: 只能以追加模式打开。
A: 不能更新atime(文件访问时间)。
c: 当被写入磁盘时被自动压缩。
C: 关掉“写时复制”。
i: 不可变更。
s: 通过自动归零来安全删除。(LCTT 译注:一般情况文件被删后内容不会被修改,改标志位会使得文件被删后原有内容被“0”取代)
注意设置或取消一个文件的“不可变更”标志位是需要root用户权限的。现在检查该文件“不可变更”标志位是否被添加上了。
一旦文件被设置为不可变更,任何用户都将无法修改该文件。即使是root用户也不可以修改、删除、覆盖、移动或者重命名这个文件。如果你想再次修改这个文件,需要先把“不可变更”标志位取消了。
用如下命令取消“不可变更”标志位:
如果你想让一个目录(比如/etc)连同它下边的所有内容不可变更,使用“-R”选项:
和“不可变更”标志位类似,你可以使用如下命令让文件变成“只可追加”模式:
注意当你复制一个“不可变更”或者“只可追加”的文件到其他地方后,新文件不会保留这些标志位!
作者:Dan Nanni 译者:goreliu 校对:wxy
chown和
chmod命令修改文件的归属关系或者权限位是处理这种情况的一个解决方法,但这并不完美,因为这样无法避免有root权限的操作。这时
chattr就派上用场了。
chattr是一个可以设置或取消文件的标志位的Linux命令,它和标准的文件权限(读、写、执行)是分离的。与此相关的另一个命令是
lsattr,它可以显示文件的哪些标志位被设置上了。最初只有EXT文件系统(EXT2/3/4)支持
chattr和
lsattr所管理的标志位,但现在很多其他的原生的Linux文件系统都支持了,比如XFS、Btrfs、ReiserFS等等。
在这个教程中,我会示范如果使用
chattr来让Linux中的文件不可变更。
chattr和
lsattr命令是e2fsprogs包的一部分,它在所有现代Linux发行版都预装了。
下面是
chattr的基本语法。
[code]$ chattr [-RVf] [操作符][标志位] 文件...[/code]
其中操作符可以是“+”(把选定的标志位添加到标志位列表)、“-”(从标志位列表中移除选定的标志位)、或者“=”(强制使用选定的标志位)。
下面是一些可用的标志位。
a: 只能以追加模式打开。
A: 不能更新atime(文件访问时间)。
c: 当被写入磁盘时被自动压缩。
C: 关掉“写时复制”。
i: 不可变更。
s: 通过自动归零来安全删除。(LCTT 译注:一般情况文件被删后内容不会被修改,改标志位会使得文件被删后原有内容被“0”取代)
“不可变更”标志位
为了让一个文件不可变更,你需要按照如下方法为这个文件添加“不可变更”标志位。例如,对/etc/passwd文件做写保护:[code]$ sudo chattr +i /etc/passwd[/code]
注意设置或取消一个文件的“不可变更”标志位是需要root用户权限的。现在检查该文件“不可变更”标志位是否被添加上了。
[code]$ lsattr /etc/passwd[/code]
一旦文件被设置为不可变更,任何用户都将无法修改该文件。即使是root用户也不可以修改、删除、覆盖、移动或者重命名这个文件。如果你想再次修改这个文件,需要先把“不可变更”标志位取消了。
用如下命令取消“不可变更”标志位:
[code]$ sudo chattr -i /etc/passwd[/code]
如果你想让一个目录(比如/etc)连同它下边的所有内容不可变更,使用“-R”选项:
[code]$ sudo chattr -R +i /etc[/code]
“只可追加”标志位
另一个有用的的标志位是“只可追加”,它只允许文件内容被追加的方式修改。你不能覆盖或者删除一个设置了“只可追加”标志位的文件。这个标志位在你想避免日志文件被意外清理掉的情况很有用。和“不可变更”标志位类似,你可以使用如下命令让文件变成“只可追加”模式:
[code]$ sudo chattr +a /var/log/syslog[/code]
注意当你复制一个“不可变更”或者“只可追加”的文件到其他地方后,新文件不会保留这些标志位!
结论
在这个教程中,我展示了如何使用chattr和
lsattr命令来管理额外的文件标志位,来避免文件被篡改(意外或者其他情况)的方法。注意你不能将
chattr作为一个安全措施,因为“不可变更”标志位可以很容易被取消掉。解决这个问题的一个可能的方式是限制
chattr命令自身的可用性,或者去掉CAPLINUXIMMUTABLE内核权能标志。关于
chattr以及可用的标志位的更多细节,请参考它的man手册。
作者:Dan Nanni 译者:goreliu 校对:wxy
相关文章推荐
- 【原】Linux 中如何通过命令创建文件——如何创建一个空文件
- linux 下如何给一个普通用户有在指定目录下有创建文件的权限
- Linux下如何遍历指定目录下的所有文件并删除指定天数之前创建的文件
- linux 如何显示一个文件的某几行(中间几行)
- 如何创建一个静态库文件,并打包在模拟器和真机上都可以使用。
- 如何在Linux创建安全的临时文件
- linux 如何显示一个文件的某几行(中间几行)
- linux 如何显示一个文件的某几行(中间几行)
- linux 如何显示一个文件的某几行(中间几行)
- Linux 如何用vim命令把编辑文件的几行内容拷贝到一个新文件
- 通过修改配置文件,手动创建一个Linux可登陆账户
- 如何在Linux下创建与解压.zip .tar , tar.gz和tar.bz2文件
- 【LINUX】——linux如何使用Python创建一个web服务
- Linux中如何使用附属属组创建文件
- linux 如何显示一个文件的某几行(中间几行)
- 如何在 Linux 上使用 SSHfs 挂载一个远程文件系统
- 如何在 Linux 上使用 SSHfs 挂载一个远程文件系统
- 如何在 Linux 终端下创建新的文件系统/分区
- 一个操作系统的实现(1):分析linux下如何运行一个执行文件
- linux 如何显示一个文件的某几行(中间几行)