Восстановление удаленных файлов

Многие исследователи и опытные пользователи операционных систем клона UNIX утверждают, что они весьма надежны и успешно противостоят сбоям в работе. Тем не менее, опасность потери файлов с ценной информацией является угрозой для любой системы. Чаще эти угрозы исходят не от операционной системы, а от пользователей.

В операционных системах Linux обычно не предусматривается «корзины» для удаленных файлов, и для обычного пользователя, не имеющего доступа к элементам файловой системы, восстановление уничтоженной информации будет недоступно. Администратор имеет право использовать отладчики и редакторы файловой системы, но восстановление удаленных файлов требует хороших знаний о файловой системе и может потребовать немало времени.

Логическое удаление файла в Linux происходит тогда, когда из соответствующего каталога удаляется последнее имя (жесткая ссылка) файла. Кроме удаления записи в каталоге, система обнуляет биты, закрепленные за этим файлом в битовой карте блоков и индексных дескрипторов, увеличивая цифру свободных inode и блоков.

Удаление объектов файловой системы производится с помощью утилиты rm (remove). Ввод команды с опцией -f означает безусловное удаление файла, при указании -г происходит безусловное рекурсивное удаление каталога. При обычном удалении файла система выводит запрос на удаление, который необходимо подтвердить символом «Y» (Yes) и «Enter».

Администратору системы можно порекомендовать вообще закрыть доступ к утилите rm для всех пользователей и оставить ее только для собственного использования. Взамен рекомендуется написать сценарий с таким же именем, который помещает удаляемые файлы в специально созданный каталог - он и будет прообразом «корзины». Приводить пример такого сценария нет смысла -это одно из заданий для обучаемых. Однако, если о существовании такого каталога ненадолго забыть, он превратится в своеобразную «Авгиеву конюшню» для операционной системы.

В правах доступа на файл право на его удаление вообще не предусматривается. Для того чтобы удалить файл, пользователь должен иметь права на запись и исполнение в том каталоге, где удаляемый файл находится. На сам удаляемый файл пользователь может вообще не иметь никаких прав. В файловых системах UNIX существует единственный каталог, в который имеет право записывать информацию любой пользователь - это каталог /tmp. И любой пользователь прежде имел возможность в любой момент удалить из этого каталога любые файлы. Для предотвращения такой возможности уже давно используется специальный Sticky-бит, устанавливаемый на этот каталог. Так, права доступа к каталогу /tmp устанавливаются командой:

chmod 1777 /tmp

где первая единица в правах доступа обозначает Sticky-бит.