Я хочу защитить свои папки в $ HOME от случайного удаления. Я применил к ним chattr +i, но заметил, что последнее применяется рекурсивно, поэтому папка действительно не может быть удалена, но я также не могу в нее записать.
Это не рекурсивно, просто как работают каталоги. Каталог - это, по сути, специальный файл со списком имен и инодов. (По крайней мере , он имел обыкновение быть,. Вы еще не cat
каталоги на некоторой BSDs) Когда вы пытаетесь создать, переименовать или удалить файл, вы не изменяете сам файл, вы изменяете его родительский каталог. Если каталог помечен как неизменяемый, вы не можете изменить его, но подкаталоги все еще могут быть изменены.
Я также попытался применить липкий бит с помощью chmod 1775 и изменить владельца папки с помощью chown root foldername. Обычно, когда включен sticky bit, удалить его может только владелец папки, но, как ни странно, в моем случае, хотя папка принадлежит пользователю root, я могу удалить ее с моим обычным пользователем.
Заклепка позволяет удалять объекты, если вы владеете либо самим объектом, либо его родительским каталогом.
Я заметил, что пользовательские папки в /home разделе, хотя они принадлежат текущему пользователю и имеют права rwx для владельца, их нельзя удалить / изменить. Как это достигается?
См. Выше - при удалении объекта файловой системы вы должны иметь разрешение на запись в родительский каталог, а не в сам объект. В этом случае /home
принадлежит пользователю root, и у вас есть только разрешения на "чтение"+"выполнение".
В заключение,
резервное копирование.
Объект файловой системы: n. файл, каталог, узел устройства, символическая ссылка, канал, сокет Unix или любой другой ад, который может храниться в файловой системе.