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

UNIX ctime: как сохранить эту ценную информацию в резервных копиях (tar)?

У меня есть три вопроса, связанных с информацией о файле ctime. Они в смелый (если у вас нет времени, вы можете сразу перейти к ним).


Сайт на моем выделенном сервере был взломан. Было отредактировано много файлов. Я заметил, что некоторые хакеры были достаточно умны, чтобы сбросить mtime (некоторые нет).

atime и mtime можно изменить с помощью функций PHP. ctime также можно изменить с помощью функции chmod. Но ctime обрабатывается ядром, поэтому можно установить только текущую системную дату / время. Это невозможно вернуть в прошлое.

Я нашел несколько бэкдоров, mtime которых было сброшено на ctime (дата в прошлом, например, 1 или 2 года назад), поэтому я не могу найти его с помощью инструмента рекурсивного поиска на основе этой информации.

Ключом к быстрому поиску всех зараженных файлов, конечно же, является информация ctime. Проблема в том, что я сначала не подумал об этом, поэтому сначала я рекурсивно "изменил" все файлы, чтобы у самого веб-сайта больше не было разрешений на запись. При этом я потерял драгоценную информацию о ctime.

У меня много резервных копий в виде файлов .tar.gz. Я хочу знать, есть ли способ извлечь из файла tar.gz ctime файлов в тот момент, когда они были добавлены в деготь.

Я прочитал всю документацию по tar GNU и обнаружил, что формат tar «GNU» (который по умолчанию используется моим сервером Linux) хранит ctime своих заархивированных файлов. Я пробовал извлечь его следующим образом:

tar -zxf Friday.tar.gz --to-command=./script

./script - это сценарий bash, который выглядит так:

#!/bin/bash
echo $TAR_CTIME

Проблема в том, что это дает текущую дату и время, возможно, потому, что tar выдает информацию о файле, который он сам создал бы, если бы я не использовал --to-command


Если tar не может справиться с этим, есть ли инструменты резервного копирования, которые могут сохранить исходную информацию ctime?


Как вывести список всех файлов, mtime и ctime которых различаются? Я прочитал руководство по поиску, но узнал только -newerXY, который (если я хорошо понимаю) может сравнивать ctime только с ctime, mtime с mtime и т. д. Есть ли способ сравнить ctime и mtime одного и того же файла?

Рассматривали ли вы возможность использования опции сравнения tar, чтобы увидеть, какие файлы были изменены? Это должно дать вам быстрый список кандидатов.

ctime управляется ядром, а не каким-либо инструментом пользовательского пространства, tar или любой другой программой, потому что для резервного копирования и восстановления им необходимо создать новый индексный дескриптор, который должен иметь новое время ctime. один из известных способов сохранить это - поместить вашу файловую систему в файл loopback и сохранить это изображение. если ваша файловая система не заполнена, и вы действительно хотите сохранить ее целиком, это довольно расточительно.

есть более эффективные программы, такие как partimage, но я не проверял, сохраняют ли они ctime inodes.