Всех с прошедшим новым годом!
В этой заметке я бы хотел поделиться как можно восстановить открытый файл в linux.
Предыстория
Зашел человек на канал посвященный debian в jabber и сказал что взломали его jabber-bot и выполнили команду:
$ rm -rf /*
так как это было выполнено не под рутом, особых проблем быть не должно, но конфигурационные файлы бота удалены. Бот остался запущен и задача была восстановить открытые им файлы и попробовать максимально быстро поднять всё с теми же настройками.
Восстанавливаем файл
Первым делом нам нужно убедиться что у нас стоит приложение lsof и примонтирован procfs в /proc.
В этой заметке я буду считать что в системе где будут восстанавливаться открытые файлы все нужные приложения стоят, root доступ есть, всё примонтировано как нужно.
Первым делом нам нужно найти открытый файл с помощью программы lsof:
$ sudo lsof filename
Пример:
$ sudo lsof /home/anton/.xsession-errors
kwin 2031 anton 2w REG 253,3 4486557 1835028 /home/anton/.xsession-errors
Нас интересуют вот эти значения:
- Номер процесса (pid)
- Файловый дескриптор (file descriptor)
Здесь я выделю жирным то что нужно:
kwin 2031 anton 2w REG 253,3 4486557 1835028 /home/anton/.xsession-errors
Дальше восстанавливаем его (вы можете также его сохранить в другом месте):
$ sudo cp /proc/2031/fd/2 /home/anton/.xsession-error
На этом всё, так можно восстановить открытый файл, но который по какой-то причине был удален.
Автор: DropSQL