linux文件特殊属性lsattr/chattr命令详解

  • 2017-04-12 15:53:25
  • 运维
  • 32
  • shevechco

lsattr命令用于显示文件属性,用 chattr可以改变文件或目录的属性。通过chattr命令修改属性能够提高系统安全性,但是它并不适合所有的目录。chattr命令不能保护/,/dev,/tmp,/var目录。

lsattr的用法

01.
lsattr [ -RVadv ] [ files… ]

参数说明

01.
-R 递归地列出目录及其内容的属性。
02.
-V 显示版本信息
03.
-a 列出目录中所有文件和目录,包括以".“为名称开头字符的额外内建,现行目录”.“与上层目录”…"
04.
-d 像列出其他文件一样列出目录,而不是列出它们的内容。
05.
-v 显示文件或目录版本。

chattr的用法

01.
chattr [ -RVf ] [ -v version ] [ mode ] files…

参数说明

01.
-R 递归处理,将指定目录下的所有文件及子目录一并处理
02.
-V 详细描述chattr的输出并打印proqram版本。
03.
-f 抑制大多数错误消息。
04.
-v 设置文件活目录的版本。

mode参数说明

01.
a:让文件或目录仅提供附加用途,只允许以追加方式读写文件
02.
A:当文件被访问时,它的atime(访问时间)记录不会被修改。这为系统避免了一定数量的磁盘I/o。
03.
c:将文件或目录压缩后存放。文件会被内核自动压缩到磁盘上。从这个文件读取未压缩的数据。对该文件的写入会在将日期存储到磁盘之前压缩它们。
04.
C:属性设置为“C”的文件将不会copy-on-write(写时复制)。此属性仅在支持copy-on-write的文件系统上支持。
05.
d:将目录排除在倾倒操作之外。
06.
D:目录被修改时,这些修改被同步写入磁盘;这相当于应用于文件子集的“dirsync”挂载选项。
07.
e:表示文件使用区段来映射磁盘上的块。不能使用chattr移除。
08.
E:用来表示压缩文件有压缩错误。虽然可以用Isattr显示,但chttr不能设置或重置它。
09.
h:表示文件以文件系统块大小为单位存储其块,而不是以扇区为单位,并表示该文件大于2TB。虽然可以通过Isattr显示,但chattr不能设置或重置
10.
i:文件不能被修改:不能被删除或重命名,不能创建到该文件的链接,也不能向该文件写入数据。
11.
I:文件或目录使用散列树对目录进行索引。不能使用chattr设置或重置它,但可以用lsattr显示。
12.
j:如果文件系统是用data=ordered或data=writeback选项挂载的,那么带有“j”属性的文件在被写到文件本身之前,它的所有数据都被写到ext3或ext4日志中。当用“data-journal”选项挂载文件系统时,所有文件数据都已经被记录,这个属性没有作用。
13.
N:表示该文件将数据内联存储在inode本身中。不能使用chattr来设置或重置,但可以通过lsattr来查看。
14.
s:允许一个文件被安全地删除文件被删除时,它的块被归零并写回磁盘。
15.
S:即时更新文件或目录。文件被修改时,这些修改将同步写入磁盘。
16.
t:带有“t”属性的文件在与其他文件合并的文件末尾不会有部分块片段(对于那些支持tail-merging的文件系统)。这是
17.
对于像LILO这样直接读取文件系统且不支持tail-merging的文件的应用程序来说是必需的。
18.
T:目录将被视为目录层次结构的顶部。这是给块分配器的一个提示由ext3和ext4使用,该目录下的子目录是不相关的,因此为了分配目的应该分散开来。
19.
u:预防意外删除。若文件删除,系统会允许你在以后恢复这个被删除的文件
20.
X:可以直接访问压缩文件的原始内容。不可以使用chattr重置或设置,可以使用lsattr显示。

一些限制说明

ext2,ext3和ext4文件系统不支持’c’,'s’和’u’属性

在当前的主线Linux内核中实现。设置’a’和’i’属性将不会影响写入现有文件描述符的能力。

"j"选项仅对ext3和ext4文件系统有用。

"D"选项仅在Linux内核2.5.19及更高版本上有用。

接下来看下实际使用场景

我们首先使用lsattr查看文件属性

01.
lsattr /etc/resolv.conf
02.
---------------- /etc/resolv.conf

接着我们使用chattr命令修改属性,防止/etc/resolv.conf文件被修改

01.
chattr +i /etc/resolv.conf
02.
lsattr /etc/resolv.conf
03.
----i----------- /etc/resolv.conf

微信截图_20240607174724.png

然后再使用mv和rm和其他命令发现操作均会返回“Operation not permitted”

微信截图_20240607175019.png

如果要取消限制使用-i命令

01.
chattr -i /etc/resolv.conf

如果只运行网文件里面追加内容,不能删除,可以使用+a参数

01.
chattr +a /etc/resolv.conf
02.
lsattr /etc/resolv.conf
03.
-----a---------- /etc/resolv.conf

我们再分别使用rm和echo命令进行测试

微信截图_20240607175352.png

发现可以进行追加,但是依然不能删除,如果要取消设置的属性使用-a参数即可

01.
chattr -a /etc/resolv.conf
02.
lsattr /etc/resolv.conf
03.
---------------- /etc/resolv.conf



内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.sulao.cn/post/348

相关推荐