Как сделать файл или папку не удаляемыми? [Дубликат]

На этот вопрос уже есть ответ:

Я хочу сделать файл или папку не удаляемыми, даже суперпользователь не сможет удалить этот файл. Chattr команда делает файл доступным для удаления, только если файлы были в файловых системах Linux (ext2,ext4). Но я хочу сделать файл, который можно восстановить, который был в файловой системе ntfs.

5
задан 16.05.2020, 19:50

1 ответ

Нет такой вещи, которую "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!
15
ответ дан 16.05.2020, 19:51

Теги

Похожие вопросы