cod*_*lic 0 security linux files filesystems stat
我想确保没有人更改文件。为了实现这一点,我不仅要检查文件的 MD5 总和,还要检查其大小,因为据我所知,这个额外的简单检查可以使伪造复杂化几位数字。
我可以相信stat返回的尺寸吗?我不是说是否对stat自身进行了更改。我没那么深。但是,例如,是否可以stat通过破解目录文件来损害返回的文件大小?或者通过类似的方式,不需要超级用户权限?
它是Linux。
这是稀疏文件的演示,这是大小可能会产生误导的一种方式:
$ dd if=/dev/zero of=sparse.out bs=512 seek=100000 count=0
0+0 records in
0+0 records out
0 bytes (0 B) copied, 7.5053e-05 s, 0.0 kB/s
$ echo hi>>sparse.out
$ ls -l sparse.out
-rw-r--r-- 1 user group 51200003 2010-04-13 02:09 sparse.out
$ stat sparse.out
File: `sparse.out'
Size: 51200003 Blocks: 24 IO Block: 4096 regular file
Device: 802h/2050d Inode: 1111111 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1111/ user) Gid: ( 1111/ group)
Access: 2010-04-13 02:09:11.000000000 -0500
Modify: 2010-04-13 02:09:09.000000000 -0500
Change: 2010-04-13 02:09:09.000000000 -0500
$ hexdump -C sparse.out
00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
030d4000 68 69 0a |hi.|
030d4003
$ du sparse.out
12 sparse.out
Run Code Online (Sandbox Code Playgroud)
如您所见,字节计数ls和stat显示分配的空间,但只有块计数stat和输出du甚至接近文件的实际内容。