2

Я хочу защитить свои папки в $ HOME от случайного удаления. Я применил к ним chattr +i , но заметил, что последнее применяется рекурсивно, поэтому папка действительно не может быть удалена, но я не могу в нее записать.

Я также попытался применить липкий бит с помощью chmod 1775 и изменить владельца папки с помощью chown root foldername . Обычно, когда включен sticky-бит, удалить его может только владелец папки, но, как ни странно, в моем случае, хотя папка принадлежит root, я могу удалить ее с обычным пользователем.

Я заметил, что пользовательские папки в /home разделе, хотя они принадлежат текущему пользователю и имеют права rwx для владельца, их нельзя удалить / изменить. Как это достигается?

Я использую Arch Linux 32-bit, а файловая система - ext4.

3 ответа3

3

Я хочу защитить свои папки в $ HOME от случайного удаления. Я применил к ним chattr +i, но заметил, что последнее применяется рекурсивно, поэтому папка действительно не может быть удалена, но я также не могу в нее записать.

Это не рекурсивно, просто как работают каталоги. Каталог - это, по сути, специальный файл со списком имен и инодов. (По крайней мере , он имел обыкновение быть,. Вы еще не cat каталоги на некоторой BSDs) Когда вы пытаетесь создать, переименовать или удалить файл, вы не изменяете сам файл, вы изменяете его родительский каталог. Если каталог помечен как неизменяемый, вы не можете изменить его, но подкаталоги все еще могут быть изменены.

Я также попытался применить липкий бит с помощью chmod 1775 и изменить владельца папки с помощью chown root foldername. Обычно, когда включен sticky bit, удалить его может только владелец папки, но, как ни странно, в моем случае, хотя папка принадлежит пользователю root, я могу удалить ее с моим обычным пользователем.

Заклепка позволяет удалять объекты, если вы владеете либо самим объектом, либо его родительским каталогом.

Я заметил, что пользовательские папки в /home разделе, хотя они принадлежат текущему пользователю и имеют права rwx для владельца, их нельзя удалить / изменить. Как это достигается?

См. Выше - при удалении объекта файловой системы вы должны иметь разрешение на запись в родительский каталог, а не в сам объект. В этом случае /home принадлежит пользователю root, и у вас есть только разрешения на "чтение"+"выполнение".

В заключение,

резервное копирование.


Объект файловой системы: n. файл, каталог, узел устройства, символическая ссылка, канал, сокет Unix или любой другой ад, который может храниться в файловой системе.

0

Чтобы создать, удалить или переименовать элемент в каталоге, вы должны иметь разрешение на запись в каталог. Обычно /home недоступен для записи обычным пользователям, поэтому вы не можете создавать, удалять или переименовывать каталог в /home .

Закрепленный бит в каталоге добавляет дополнительное требование, что только владелец файла или каталога (или суперпользователь) может удалять или переименовывать существующие элементы в каталоге. Это не помешает вам удалить вещи, которыми вы владеете. Он предназначен для общедоступных каталогов, таких как /tmp , чтобы позволить кому-либо создавать новые файлы, а также удалять или переименовывать файлы, которыми он владеет, но для предотвращения удаления или переименования файлов, принадлежащих другим пользователям.

Создание каталога неизменным (chattr +i) означает, что он вообще не может быть изменен, поэтому в нем нельзя создавать новые файлы и ничего в нем нельзя удалить или переименовать. Если вы хотите предотвратить удаление каталога, но по-прежнему хотите иметь возможность создавать, удалять и переименовывать файлы в нем, вы можете сделать это, создав неизменный файл в каталоге, поскольку каталог не может быть удален, пока он существует. что-то в этом есть. В качестве альтернативы вы можете создать подкаталог без разрешения на запись, содержащий хотя бы один файл.

0

Немного опоздал на вечеринку, но chattr +a (опционально -R для рекурсивного) позволит вам создавать новые файлы, но не удалять их.

Флаг +a заставляет присоединяться только к каталогу (тогда как +i делает его неизменным).

Это означает, что при попытке удалить файл ОС попытается удалить его из каталога, что приведет к сбою, что приведет к сбою всей операции удаления.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .