32

Я хочу сделать файл заблокированным от удаления, но все же быть доступным для записи. Как мне это сделать?

Данный файл представляет собой том Truecrypt в виде файла на сетевом ресурсе NAS SMB, поэтому я не хочу случайно его удалять.

5 ответов5

34

Для Windows:

  1. Запретить "Удалить" разрешение на файл.
  2. Удалите или запретите разрешение "Удалить дочерние элементы" в родительском каталоге.

Для Unix (включая OS X):

  1. Удалите разрешение "Запись" в родительском каталоге.

Обратите внимание, что это только предотвратит удаление (удаление) файла, но ничего не сделает против случайного усечения или перезаписи с мусором. Если файл доступен для записи, вы можете написать в него что угодно, точка.

Кроме того, права доступа к файлам практически невозможно преобразовать между операционными системами. Если NAS работает под управлением Linux, и вы пытаетесь установить разрешения изнутри Windows, конечный результат может отличаться от ожидаемого.

26

В Linux вы можете создать жесткую ссылку на него. Затем вы можете написать и "удалить" его, но вы будете только удалять ссылку в вашем каталоге. Другая жесткая ссылка будет по-прежнему указывать на содержимое файла, поэтому он все равно не будет удален.

В мире Unix вы не "удаляете" файлы. Вы просто уменьшаете количество жестких ссылок на него. Когда ничто иное не указывает на это, пространство считается свободным и может использоваться ...

12

Резервные копии. Вы не можете реально защитить записываемый файл от повреждения, даже если вы можете от удаления. Поддерживайте это ежедневно.

0

В коровьей файловой системе, такой как btrfs, вы можете добиться этого с помощью subvolumes + snapshots или cp с параметром --reflink = всегда, что приведет к тому, что вы получите столько файлов, сколько захотите, и которые будут занимать столько же места, сколько один + некоторые накладные расходы (но без безумного количества копий или снимков, особенно в сочетании с крошечными размерами файлов, это не должно быть заметно), пока они не будут изменены, и в этом случае только измененные части сохраняются отдельно, а остальная часть остается общей. Затем установите разрешения для каждого отдельно (для достижения того, что вы хотите, просто регулярно делайте снимок или копию с разрешениями только для чтения) (и при желании монтируйте его как ro или не все, если это снимок и если это файл, используйте chattr + i (пользователи могут не пишите и не изменяйте файл, даже если у вас есть права на запись) на одну копию, если вы параноик).

0

В дополнение к предыдущим ответам я хотел бы взглянуть на selinux. Там вы можете определить довольно детальные ограничения.

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