0f43eccea8f09e0a0b2b5cf1dcf333ba /boot/vmlinuz
Обратите внимание: утилита cksum выводит контрольную сумму и размер файла в байтах.
Пример 12-29. Проверка целостности файла
# file-integrity.sh: Проверка целостности файлов в заданном каталоге
# Файл для хранения контрольных сумм.
echo ""$directory"" > "$dbfile"
# Записать название каталога в первую строку файла.
md5sum "$directory"/* >> "$dbfile"
# Записать контрольные суммы md5 и имена файлов.
# ------------------------------------------- #
# Возможно эта проверка и не нужна,
#+ но лучше перестраховаться сейчас, чем жалеть об этом потом.
echo "Не могу прочитать файл с контрольными суммами!"
# ------------------------------------------- #
directory_checked="${record[0]}"
if [ "$directory_checked" != "$directory" ]
echo "Имя каталога не совпадает с записаным в файле!"
# Попытка использовать файл контрольных сумм для другого каталога.
if [ "$n" -gt 0 ] # Не имя каталога.
filename[n]=$( echo ${record[$n]} | awk '{ print $2 }' )
# md5sum записывает в обратном порядке,
#+ сначала контрольную сумму, затем имя файла.
checksum[n]=$( md5sum "${filename[n]}" )
if [ "${record[n]}" = "${checksum[n]}" ]
echo "Файл ${filename[n]} не был изменен."
echo "ОШИБКА КОНТРОЛЬНОЙ СУММЫ для файла ${filename[n]}!"
# Файл был изменен со времени последней проверки.
done <"$dbfile" # Чтение контрольных сумм из файла.
# =================================================== #
directory="$PWD" # Если каталог не задан,
else #+ то используется текущий каталог.
# ------------------------------------------------------------------ #
if [ ! -r "$dbfile" ] # Необходимо создать файл с контрольными суммами?
echo "Создание файла с контрольными суммами, \""$directory"/"$dbfile"\"."; echo
# ------------------------------------------------------------------ #
check_database # Выполнить проверку.
# Вывод этого сценария можно перенаправить в файл,
#+ это особенно полезно при проверке большого количества файлов.
# Более строгая проверка целостности файлов,
#+ может быть выполнена с помощью пакета "Tripwire",
#+ http://sourceforge.net/projects/tripwire/.
Более творческий подход к использованию md5sum вы нйдете в Пример A-21.