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

Напомню, что в предыдущем посте мы пытались восстановить удаленный файл, не копируя его. У нас не получилось, но мы пробуем еще.

Пробуем. В Linux есть системный вызов linkat(). Он поддерживает флаги AT_EMPTY_PATH и AT_SYMLINK_FOLLOW, которые позволяют создать хардлинк на файл по файловому дескриптору на него (в том числе по ссылке в /proc/<pid>/fd). На StackOverflow показывают пример, как можно сделать хардлинк по файловому дескриптору:

fd = open("/tmp", O_TMPFILE | O_RDWR, 0600);
// write something to the file here
// fchown() / fchmod() it
linkat(fd, "", AT_FDCWD, "/tmp/test", AT_EMPTY_PATH);

Попробуем так же:
https://pastebin.com/tkyY2abT

Увы, не работает: программа выдает linkat: No such file or directory. Впрочем, man явно предупреждает, что ничего не выйдет, и среди ошибок упоминает

> ENOENT An attempt was made to link to a /proc/self/fd/NN file corresponding to a file that has been deleted.

Вариант с AT_SYMLINK_FOLLOW тоже ничего не дает:
https://pastebin.com/vVz3zcR0

Так что, к сожалению, остается единственный способ — копировать.
  • 😢 1
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 →