Назад | Перейти на главную страницу

Может ли быть скомпрометирован размер файла, возвращаемый 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

Как видите, количество байтов в ls и stat показать выделенное пространство, но только количество блоков stat и выход du даже близки к фактическому содержанию файла.

Вы спрашиваете, может ли кто-то скомпрометировать размер файла, возвращаемого stat, взлом файла каталога. Нет, это невозможно. Каталог - это просто список имен файлов и номеров inode. Вся остальная информация о файле (владелец, группа, режим, размер и т. Д.) Содержится в индексном дескрипторе (по крайней мере, в файловых системах, совместимых с POSIX), и именно отсюда stat собирает эту информацию.

Почему вас волнует размер файла? Сравнение сумм MD5 покажет вам с абсолютной уверенностью, был ли файл изменен или нет. Перемещение битов внутри файла сохранит размер файла, но это может быть совершенно другой файл.