TGViewer
Гепардово гнездо Гепардово гнездо @gepardchan · 617 subscribers
Post #30 255
Как восстановить файл, если кто-то держит на него открытый файловый дескриптор

Как известно, файл можно удалить, пока кто-то его открыл и из него читает. В этом случае уже открытый файловый дескриптор все еще доступен после удаления файла, и из него можно спокойно читать.

Можно попытаться и восстановить доступ к удаленному файлу: найти его в /proc/<pid>/fd/<fd> и скопировать. Но можно ли обойтись без копирования, а просто восстановить хардлинк на него в файловой системе?

Известно, что ссылка на открытый файл в /proc отображается как символьная ссылка, но на самом деле символьной ссылкой не является. Так, для открытого удаленного файла stat будет выглядеть примерно так:

$ stat /proc/42002/fd/3
Файл: /proc/42002/fd/3 -> /home/gepardo/tmp/q.txt (deleted)
Размер: 64 Блоков: 0 Блок В/В: 1024 символьная ссылка
Устройство: 00h/00d Инода: 000000 Ссылки: 1
Доступ: (0500/lr-x------) Uid: ( 1000/ gepardo) Gid: ( 1000/ gepardo)
Доступ: 2022-11-03 20:46:09.224688879 +0300
Модифицирован: 2022-11-03 20:46:02.440682242 +0300
Изменён: 2022-11-03 20:46:02.440682242 +0300
Создан: -

Теперь попробуем создать хардлинк. Сначала попробуем воспользоваться простой командой ln:
$ ln -T /proc/42002/fd/3 w.txt
ln: не удалось создать жёсткую ссылку 'w.txt' => '/proc/42002/fd/3': Неверная ссылка между устройствами

Не получилось. Но мы непременно попробуем еще в следующем посте :)
  • 👍 3
More from @gepardchan
  1. Sep 7, 2025Итак, расскажу о том, что я сделал еще давно, но про что все никак не доходили руки написа…
  2. Dec 10, 2024https://habr.com/ru/post/472970/ Статья 2019 года, то есть довольно старая, с учетом того,…
  3. Nov 30, 2024Сегодня читал про то, как Debian везде перешел на 64-х битный time_t. Изменение войдет в р…
  4. Nov 26, 2024https://www.ryanliptak.com/blog/every-rc-exe-bug-quirk-probably/ Не знаю, как вы, а я прос…
  5. Nov 22, 2024Еще про проклятые фичи баша https://yossarian.net/til/post/some-surprising-code-execution-…
  6. Nov 21, 2024Про переписывание истории В баше (а точнее, в GNU Readline, который используется башом), е…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →