Як заблокувати файл проти видалення, але все-таки зробити його доступним для запису?


33

Я хочу зробити файл заблокованим проти видалення, але все-таки бути доступним для запису. Як це зробити?

Розглянутий файл є томом Truecrypt у вигляді файлу на спільній мережі NAS SMB, тому я не хочу його випадково видаляти.


1
Це неможливо. Запис нулів означає її видалення.
soandos

@soandos - Я не згоден, боюся. Оскільки писати нулі до нього все ще означає, що файл існує, але він заповнений нулями. Дійсно, є команди Linux для створення "розрідженого" файлу, заповненого нулями.
therobyouknow

Відповіді:


34

Для Windows:

  1. Заборонити дозвіл на видалення файлу.
  2. Видаліть або забороніть дозвіл "Видалити дочірні елементи" у батьківському каталозі.

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

  1. Видаліть дозвіл "Написати" з батьківського каталогу.

Зауважте, що це лише запобіжить видаленню (видаленню) файлу, але не зробить нічого проти випадкового усічення або перезапису сміттям. Якщо файл можна записати, ви можете написати до нього що завгодно, періодично.

Крім того, права доступу до файлів поруч із неможливим перекладом між операційними системами. Якщо NAS працює з Linux, а ви намагаєтеся встановити дозволи в Windows, кінцевий результат може відрізнятися від очікуваного.


Найкращу відповідь я отримаю, думаю. +1 і спасибі Так, NAS - це Lacie 2big, на якому працює версія Linux на ARM.
therobyouknow

1
Забороняти видалення фактично не потрібно, просто видаліть Видалити з існуючих записів контролю доступу (ACE). (Заперечуйте ІПСС ускладнюють справи, як правило, це не хороший курс у довгостроковій перспективі.)
Річард

2
@Richard: AFAIK, видалення вимагає повного відключення успадкування ACL для цього файлу, що робить його ще більш складним , в кінці кінців.
grawity

Я згоден з Grawity. Дозвіл на видалення дозволу - це шлях. Якщо дозвіл на спільний доступ встановлений для зміни, відхилення все одно заблокує видалення, а залишити його порожнім дозволить видалити.
surfasb

26

У Linux ви можете створити жорстке посилання на нього. Потім ви можете написати на нього та "видалити", але ви видалите лише посилання у своєму каталозі. Інше жорстке посилання все одно вказуватиме на вміст файлу, тому його все одно не буде видалено.

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


2
Гарна ідея. Не знаю, чи може @Rob створити жорсткі посилання на своєму NAS, але якщо він зможе, це дуже розумне рішення.
CarlF

1
+1 Я можу це зробити у поєднанні з прийнятою відповіддю, якщо можливо. або окремо, якщо ні. +1 для роздумів поза рамками, як було сказано. Однак спільна частка Linux - це накопичувач NAS, не впевнений, які доступні засоби консолі, її вбудована або напіввбудована форма Linux. Ще 1, хоча це може допомогти іншим людям, у яких звичайний робочий стіл Linux або комп'ютер виступають як спільний доступ.
therobyouknow

2
Ця ж методика повинна працювати з NTFS.
Ротсор

+1 RBerteig та +1 CarlF для підтримки рішення woliveirajr.
therobyouknow

12

Резервні копії. Ви дійсно не можете захистити файл, що записується, від пошкодження, навіть якщо ви можете його видалити. Створюйте резервні копії щодня.


4
+1. Робіть це незалежно від того, які інші ремені та підтяжки застосовуються.
RBerteig

+1 CarlF та +1 RBerteig. Повністю згоден. Усі файли також резервного копіювання на оптичні носії (DVD-R, + R, + R DL та blu-ray 25gb та dl 50gb). Я також можу розглянути другий жорсткий диск.
therobyouknow

Додам, у мене є резервні копії файлів у томі truecrypt, що є файлом контейнера. Чи не сам том truecrypt.
therobyouknow

0

На додаток до попередніх відповідей я б розглядав selinux. Там ви можете визначити досить детальні обмеження.


0

У файловій системі корів, наприклад, btrfs, ви можете досягти цього за допомогою підпунктів + ​​знімків або cp з --reflink = завжди це ефективно призведе до того, скільки бажаєте файлів, які б зайняли стільки ж місця, як один + деякий накладні витрати (але без божевільної кількості копій або знімків, особливо в поєднанні з крихітними розмірами файлів, це не повинно бути помітним), поки вони не будуть змінені, і в цьому випадку окремі частини, що були змінені, зберігаються окремо, а решта все ще ділиться. Потім встановіть дозволи на кожен окремо (щоб досягти того, що ви хочете, просто регулярно робити знімок або копіювати з дозволами лише для читання (і, можливо, встановити його ro або not all, якщо це знімок, і якщо це файл, використовуйте chattr + i (користувачі можуть не пишіть і не змінюйте файл, навіть якщо у вас є дозволи на запис) на одній копії, якщо ви параноїк).


0

У "стандартному" UNIX, схоже, неможливо захистити один файл від видалення, якщо каталог записується. Інтуїтивно можна очікувати, що очищення захисту w від бітів режиму за допомогою "chmod" повинно захищати від видалення, але ЦЕ НЕ СЛУЧАЄ. Аналогічно, в AFS ви не можете захистити окремі файли від видалення, оскільки записи ACL (відсутні або забороняючи відповідну дозволу "d") стосуються лише каталогу в цілому.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.