¿Cómo bloquear un archivo para que no se elimine pero aún así hacerlo escribible?

33

Quiero hacer un archivo bloqueado contra la eliminación, pero aún así se puede escribir. ¿Cómo hago esto?

El archivo en cuestión es un volumen Truecrypt como un archivo en un recurso compartido de red NAS SMB, por lo que no quiero eliminarlo accidentalmente.

therobyouknow
fuente
1
No es posible. Escribir ceros equivale a borrarlo.
soandos
@soandos - No estoy de acuerdo, tengo miedo. Porque escribir ceros todavía significa que el archivo existe, pero está lleno de ceros. De hecho, hay comandos de Linux para crear un archivo 'disperso' lleno de ceros.
therobyouknow

Respuestas:

34

Para ventanas:

  1. Denegar el permiso "Eliminar" en el archivo.
  2. Elimine o denegue el permiso "Eliminar elementos secundarios" en el directorio principal.

Para Unix (incluido OS X):

  1. Elimine el permiso "Escribir" en el directorio principal.

Tenga en cuenta que esto solo evitará que el archivo se elimine (elimine), pero no hará nada contra el truncamiento accidental o la sobrescritura con basura. Si un archivo es grabable, puede escribirle cualquier cosa, punto.

Además, los permisos de archivo son casi imposibles de traducir entre sistemas operativos. Si el NAS ejecuta Linux e intenta establecer permisos desde Windows, el resultado final puede ser diferente de lo que espera.

Gravedad
fuente
La mejor respuesta que obtendré, creo. +1 y gracias. Sí, el NAS es un Lacie 2big que ejecuta una versión de Linux en ARM.
therobyouknow
1
En realidad, no necesita Denegar la eliminación, solo elimine Eliminar de las entradas de control de acceso (ACE) existentes. (Negar ACE hace las cosas más complejas, generalmente no es un buen curso a largo plazo.)
Richard
2
@ Richard: AFAIK, la eliminación requiere deshabilitar completamente la herencia de ACL para ese archivo, lo que lo hace aún más complejo al final.
Grawity
Estoy de acuerdo con Grawity. Denegar Eliminar permiso es el camino a seguir. Si el permiso social se fija a modificar, a continuación, el negar ¿ Todavía bloquear la eliminación, mientras que dejarlo en blanco permitirá supresiones.
Surfasb
26

En Linux puedes crear un enlace duro a él. Luego puede escribirle y "borrarlo", pero solo eliminará la referencia en su directorio. El otro enlace duro aún señalará el contenido del archivo, por lo que no se habrá eliminado de todos modos.

En el mundo Unix, no "borras" archivos. Simplemente disminuyes el número de enlaces duros a él. Cuando nada más lo señala, el espacio se considera libre y se puede utilizar ...

woliveirajr
fuente
2
Buena idea. No sé si @Rob puede crear enlaces duros en su NAS, pero si puede, es una solución muy inteligente.
CarlF
1
+1 Podría hacerlo en combinación con la respuesta aceptada si es posible. o por separado si no. +1 por pensar fuera de la caja como se dijo. Sin embargo, el recurso compartido de Linux en cuestión es una unidad NAS, no estoy seguro de qué instalaciones de consola están disponibles, es una forma de Linux integrada o semiincrustada. Sin embargo, todavía hace +1, ya que podría ayudar a otras personas que tienen una computadora de escritorio o computadora Linux normal que actúa como recurso compartido.
therobyouknow
2
La misma técnica debería funcionar con NTFS.
Rotsor
+1 RBerteig y +1 CarlF por apoyar la solución woliveirajr.
therobyouknow
12

Copias de seguridad. Realmente no puede proteger un archivo grabable de daños, incluso si puede eliminarlos. Respaldarlo diariamente.

CarlF
fuente
44
+1. Haga esto sin importar qué otros cinturones y tirantes se apliquen.
RBerteig
+1 CarlF y +1 RBerteig. Totalmente de acuerdo. Todos los archivos también están respaldados en medios ópticos (DVD-R, + R, + R DL y blu-ray 25gb y dl 50gb). También puedo considerar un segundo disco duro.
therobyouknow
Debo agregar, tengo copias de seguridad de los archivos dentro del volumen truecrypt que es el archivo contenedor. No es el verdadero volumen de cripta.
therobyouknow
0

Además de las respuestas anteriores, consideraría echar un vistazo a selinux. Allí puede definir limitaciones bastante granulares.

Niels Basjes
fuente
0

En un sistema de archivos de vaca como btrfs, puede lograr esto usando subvolúmenes + instantáneas o cp con --reflink = siempre esto dará como resultado tantos archivos como desee, lo que consumiría la misma cantidad de espacio que uno + algo de sobrecarga (pero sin un número increíble de copias o instantáneas especialmente combinadas con tamaños de archivo pequeños, esto no debería ser notable) hasta que se modifiquen, en cuyo caso solo las partes que se han cambiado se almacenan por separado y el resto aún se comparte. Luego, configure los permisos en cada uno por separado (para lograr lo que desea, simplemente haga una instantánea o copie con permisos de solo lectura (y, opcionalmente, móntelo en un solo o no todo si es una instantánea y si es un archivo, use chattr + i (los usuarios pueden No escriba ni modifique el archivo incluso si tiene permisos de escritura) en una copia si es paranoico).

orange_juice6000
fuente
0

En UNIX "estándar", parece imposible proteger un solo archivo de la eliminación si el directorio es grabable. Intuitivamente, uno podría esperar que borrar la protección w de los bits de modo con 'chmod' debería proteger contra la eliminación, pero ESTE NO ES EL CASO. Del mismo modo, en AFS, no puede proteger los archivos individuales para que no se eliminen, porque las entradas de ACL (que carecen o niegan la autorización 'd' relevante) solo se aplican al directorio en su conjunto.

Klaus Engelhardt
fuente