Linux扩展属性可以保护文件免于意外或恶意修改,并且只需要几句简单命令就可以加强服务器安全。
在Unix的初期,可以分配三种权限,包括用户(user)、组(group)和其他(other)。随着Linux逐渐取代Unix和数据安全性得到越来越高重视,Linux扩展属性因此而诞生。
权限与属性最重要的不同在于属性并不依赖于某个用户帐号。因此,可以将文件授权给所有用户,甚至是root。你也可以使用属性来保护文件免于被意外删除或修改。
要使用扩展属性,首先需要Linux文件系统支持。在ext3和ext4文件系统上,通过命令tune2fs -l来检查是否支持。检查默认挂载选项;如果在列表中没有发现相关信息,可通过命令 tune2fs -o user_xattr /dev/yourfilesystem 来启用扩展属性支持。同样还可以通过修改fstab文件,在其中增加user_xattr作为挂载选项。
一旦文件系统支持扩展属性,就可以很容易地通过chattr来设置所需的属性了。你所需要的是root权限。下列内容是Linux安全最常用的属性:只许增加(a): 允许为某个文件增加内容,但不允许移除现有的任何内容或删除该文件。
不可变更(i):不允许进行删除或任何修改。
安全删除(s):确保文件内容再删除后无法再被恢复。
无法删除(u): 当无法删除该文件时,确保文件的内容可以修改。
例如,假设你希望某个文件不可变更,可以使用命令chattr +i filename 来增加属性。
可以通过lsattr命令来检查文件属性,实例1。通过lsattr命令,可以查看和验证文件现有属性。正如我们上述例子中使用的不可变更属性,即使是root用户都无法删除该文件。
[root@iad data]# chattr +i file1
[root@iad data]# lsattr file1
----i--------e-- file1
[root@iad data]# rm -f file1
rm: cannot remove 'file1': Operation not permitted
实例1.检查与设置Linux扩展属性
Linux扩展属性是在现有文件系统默认功能上进行补充与强化的安全措施。我们在上述例子基础上继续测试,对用户的home目录中所有文件增加“i”扩展属性,来保护这些文件不会被从用户的home目录中删除,即使是默认拥有文件权限的用户也无法删除。
其他扩展属性
在ext4文件系统上,所有文件默认都设有extents(e)属性,因为ext4文件系统使用它们来存储文件。一个extent默认占用空间为2MB,而传统的文件系统块只有4KB。这个先进的文件系统功能是通过属性来实现的。
在chattr命令的主页上介绍,列表中的一些属性实际上可能无法使用。每个属性都需要在文件系统中才能支持与生效。如果文件系统不提供该功能,那么即使设置了属性,也是无法生效的。