Я хочу сделать файл заблокированным от удаления, но все же быть доступным для записи. Как мне это сделать?
Данный файл представляет собой том Truecrypt в виде файла на сетевом ресурсе NAS SMB, поэтому я не хочу его случайно удалять.
Я хочу сделать файл заблокированным от удаления, но все же быть доступным для записи. Как мне это сделать?
Данный файл представляет собой том Truecrypt в виде файла на сетевом ресурсе NAS SMB, поэтому я не хочу его случайно удалять.
Ответы:
Для Windows:
Для Unix (включая OS X):
Обратите внимание, что это только предотвратит удаление (удаление) файла, но ничего не сделает против случайного усечения или перезаписи с мусором. Если файл доступен для записи, вы можете записать в него что угодно, точка.
Кроме того, права доступа к файлам практически невозможно преобразовать между операционными системами. Если NAS работает под управлением Linux и вы пытаетесь установить разрешения изнутри Windows, конечный результат может отличаться от ожидаемого.
В Linux вы можете создать жесткую ссылку на него. Затем вы можете написать и «удалить» его, но вы будете только удалять ссылку в вашем каталоге. Другая жесткая ссылка будет по-прежнему указывать на содержимое файла, поэтому он все равно не будет удален.
В мире Unix вы не «удаляете» файлы. Вы просто уменьшаете количество жестких ссылок на него. Когда ничто иное не указывает на это, пространство считается свободным и может использоваться ...
Резервные копии. Вы не можете реально защитить записываемый файл от повреждения, даже если вы можете от удаления. Поддерживайте это ежедневно.
В дополнение к предыдущим ответам я хотел бы взглянуть на selinux. Там вы можете определить довольно детальные ограничения.
В коровьей файловой системе, такой как btrfs, вы можете добиться этого, используя subvolumes + snapshots или cp с параметром --reflink = всегда, что приведет к тому, что вы получите столько файлов, сколько захотите, и которые будут занимать столько же места, сколько один + некоторые накладные расходы (но без безумного количества копий или снимков, особенно в сочетании с крошечными размерами файлов, это не должно быть заметно), пока они не будут изменены, и в этом случае только части, которые были изменены, сохраняются отдельно, а остальная часть остается общей. Затем установите разрешения для каждого отдельно (для достижения того, что вы хотите, просто регулярно делайте снимок или копию с разрешениями только для чтения) (и при желании монтируйте его как ro или не все, если это снимок и если это файл, используйте chattr + i (пользователи могут не пишите и не изменяйте файл, даже если у вас есть права на запись) на одну копию, если вы параноик).
В «стандартной» UNIX, кажется, невозможно защитить один файл от удаления, если каталог доступен для записи. Интуитивно понятно, что очистка защиты w от битов режима с помощью 'chmod' должна защищать от удаления, но ЭТО НЕ СЛУЧАЙ. Точно так же в AFS вы не можете защитить отдельные файлы от удаления, поскольку записи ACL (в которых отсутствует или запрещается соответствующее разрешение 'd'), применяются только к каталогу в целом.