На этот вопрос уже есть ответ:
Я хочу сделать файл или папку не удаляемыми, даже суперпользователь не сможет удалить этот файл. Chattr
команда делает файл доступным для удаления, только если файлы были в файловых системах Linux (ext2,ext4
). Но я хочу сделать файл, который можно восстановить, который был в файловой системе ntfs
.
Нет такой вещи, которую "root
" не может удалить. Это все равно что говорить Богу, что он не может что-то сделать или отменить. root
может поставить вашу машину с ног на голову и сделать 1 + 1 = 3, если ей нравится, и вы ничего не можете сделать, чтобы предотвратить это. Итак, вы не можете запретить root удалять любой файл, который ему нравится, просто не можете. Ни NTFS, ни ext2 / 3/4, ни HSF +, ни FAT16 / 32/64, ни какая-либо другая файловая система, управляемая ОС.
Если никто не имеет root
доступа к вашей системе, это невозможно . Но затем существуют способы, которые заставляют пользователей идти дальше, чем удалять файл, одним из них является chattr
:
chattr изменяет атрибуты файла в файловой системе Linux.
[...]
Файл с атрибутом
i
не может быть изменен: его нельзя удалить или переименовать, нельзя создать ссылку на этот файл, и никакие данные не могут быть записаны в файл , Только суперпользователь или процесс, обладающий способностьюCAP_LINUX_IMMUTABLE
, может установить или очистить этот атрибут.
Таким образом, , если никто не имеет root
доступа или возможности загружаться с использованием другой операционной системы, файл может быть удален, в противном случае любой пользователь может (и будет) удалять ваш файл. То же самое, если файловая система отформатирована и / или встроена в прошивку для удаления данных с дисков.
Создать файл:
$ touch deletemeifyoucan:D
Защитить его:
$ sudo chattr +i deletemeifyoucan\:D
[sudo] password for braiam:
Попробуйте удалить его
$ rm deletemeifyoucan\:D
rm: remove write-protected regular empty file ‘deletemeifyoucan:D’? y
rm: cannot remove ‘deletemeifyoucan:D’: Operation not permitted
Теперь попробуйте с правами root:
$ sudo rm deletemeifyoucan\:D
rm: cannot remove ‘deletemeifyoucan:D’: Operation not permitted
Снимите защиту:
$ sudo chattr -i deletemeifyoucan\:D
Ушел:
$ rm deletemeifyoucan\:D
$ #POOF!