Jak zablokować plik przed usunięciem, ale nadal umożliwia zapisywanie?

33

Chcę, aby plik został zablokowany przed usunięciem, ale nadal jest możliwy do zapisu. Jak mam to zrobic?

Ten plik to wolumin Truecrypt jako plik w udziale sieciowym NAS SMB, więc nie chcę go przypadkowo usunąć.

therobyouknow
źródło
1
To nie jest możliwe. Wpisywanie zer oznacza ich usunięcie.
soandos
@soandos - Nie zgadzam się, boję się. Ponieważ zapisywanie do niego zer wciąż oznacza, że ​​plik istnieje, ale jest pełen zer. Rzeczywiście istnieją polecenia Linuksa, aby utworzyć „rzadki” plik pełen zer.
therobyouknow

Odpowiedzi:

34

Dla Windowsa:

  1. Odmów uprawnienia „Usuń” dla pliku.
  2. Usuń lub odmów uprawnienia „Usuń elementy podrzędne” w katalogu nadrzędnym.

W systemie Unix (w tym OS X):

  1. Usuń uprawnienie „Zapis” w katalogu nadrzędnym.

Zauważ, że zapobiegnie to jedynie usunięciu pliku (usunięciu), ale nie zrobi nic przeciwko przypadkowemu obcięciu lub zastąpieniu śmieci. Jeśli plik jest zapisywalny, możesz do niego zapisać cokolwiek, kropka.

Ponadto uprawnienia do plików są prawie niemożliwe do przetłumaczenia między systemami operacyjnymi. Jeśli na serwerze NAS działa system Linux, a użytkownik próbuje ustawić uprawnienia z poziomu systemu Windows, wynik końcowy może być inny niż oczekiwany.

grawitacja
źródło
Najlepsza odpowiedź, jaką otrzymam, tak myślę. +1 i dzięki. Tak, NAS to Lacie 2big z wersją systemu Linux na ARM.
therobyouknow
1
W rzeczywistości nie musisz odmawiać usuwania, wystarczy usunąć Usuń z istniejących wpisów kontroli dostępu (ACE). (Odmawiaj ACE sprawiają, że sprawy stają się bardziej złożone, zazwyczaj nie są dobrym kursem w dłuższej perspektywie).
Richard
2
@ Richard: AFAIK, usunięcie wymaga całkowitego wyłączenia dziedziczenia ACL dla tego pliku, co czyni go jeszcze bardziej skomplikowanym.
grawity
Zgadzam się z Grawity. Odmowa usunięcia uprawnienia jest właściwą drogą. Jeśli uprawnienie udziału jest ustawione na modyfikację, odmowa nadal będzie blokować usunięcie, a pozostawienie go pustego pozwoli na usunięcie.
surfasb
26

W Linuksie możesz utworzyć twardy link do niego. Następnie możesz do niego napisać i „usunąć”, ale usuniesz tylko odniesienie w swoim katalogu. Drugi twardy link nadal będzie wskazywał na zawartość pliku, więc i tak nie zostanie usunięty.

W świecie uniksowym nie „usuwasz” plików. Po prostu zmniejszasz liczbę twardych linków do niego. Gdy nic innego na to nie wskazuje, przestrzeń jest uważana za wolną i można ją wykorzystać…

woliveirajr
źródło
2
Dobry pomysł. Nie wiem, czy @Rob może tworzyć twarde linki na swoim NAS, ale czy może to bardzo sprytne rozwiązanie.
CarlF,
1
+1 Mogę to w połączeniu z zaakceptowaną odpowiedzią, jeśli to możliwe. lub osobno, jeśli nie. +1 za myślenie nieszablonowe, jak powiedziano. Jednak współudział linuksa, o którym mowa, to dysk NAS, nie jestem pewien, jakie udogodnienia konsolowe są dostępne, czy jest to wbudowana lub częściowo osadzona forma Linuxa. +1 nadal, ponieważ może to pomóc innym ludziom, którzy mają zwykły pulpit lub komputer z linuksem działający jako udział.
therobyouknow
2
Ta sama technika powinna działać z NTFS.
Rotsor
+1 RBerteig i +1 CarlF za wsparcie rozwiązania woliveirajr.
therobyouknow
12

Kopie zapasowe Naprawdę nie możesz chronić pliku do zapisu przed uszkodzeniem, nawet jeśli możesz przed usunięciem. Twórz kopie zapasowe codziennie.

CarlF
źródło
4
+1. Zrób to bez względu na inne paski i szelki.
RBerteig,
+1 CarlF i +1 RBerteig. Kompletnie się zgadzam. Pliki są również archiwizowane na nośnikach optycznych (DVD-R, + R, + R DL i Blu-ray 25 GB i DL 50 GB). Mogę również rozważyć drugi dysk twardy.
therobyouknow
Powinienem dodać, że mam kopie zapasowe plików w woluminie truecrypt, który jest plikiem kontenera. Nie sam wolumin truecrypt.
therobyouknow
0

Oprócz poprzednich anwersów rozważę spojrzenie na selinux. Tam możesz zdefiniować dość szczegółowe ograniczenia.

Niels Basjes
źródło
0

W systemie plików krów, takim jak btrfs, można to osiągnąć za pomocą podwoluminów + migawek lub cp za pomocą --reflink = zawsze spowoduje to, że będzie tyle plików, ile chcesz, które zajmą tyle samo miejsca co jeden + trochę narzutu (ale bez szalonej liczby kopii lub migawek, szczególnie w połączeniu z niewielkimi rozmiarami plików, nie powinno to być zauważalne), dopóki nie zostaną zmodyfikowane, w którym to przypadku tylko części, które zostały zmienione, są przechowywane osobno, a reszta jest nadal udostępniana. Następnie ustaw uprawnienia dla każdego z nich osobno (aby osiągnąć to, co chcesz, po prostu regularnie twórz migawkę lub kopiuj z uprawnieniami tylko do odczytu (i opcjonalnie zamontuj ro lub nie wszystko, jeśli jest to migawka i jeśli jest to plik, użyj chattr + i (użytkownicy mogą nie zapisuj ani nie modyfikuj pliku, nawet jeśli masz uprawnienia do zapisu) na jednej kopii, jeśli jesteś paranoikiem).

orange_juice6000
źródło
0

W „standardowym” systemie UNIX ochrona pojedynczego pliku przed usunięciem wydaje się niemożliwa, jeśli katalog można zapisać. Intuicyjnie można oczekiwać, że usunięcie ochrony w z bitów trybu za pomocą „chmod” powinno zabezpieczyć przed usunięciem, ale TO NIE JEST PRZYPADEK. Podobnie w AFS nie można zabezpieczyć pojedynczych plików przed usunięciem, ponieważ wpisy ACL (brak lub odmowa odpowiedniego uprawnienia „d”) dotyczą tylko całego katalogu.

Klaus Engelhardt
źródło