¿La forma más sencilla de proteger con contraseña un directorio y su contenido sin tener que crear nuevos archivos?

22

Me gustaría proteger con contraseña o encriptar un directorio y todos los archivos dentro de él (para todo el árbol de directorios debajo). No quiero molestar a todo el directorio de inicio, quiero un directorio específico con algunos archivos y carpetas. Me gustaría poder cifrar el directorio o descifrarlo con una contraseña. La línea de comando sería más agradable de usar. No quiero tener que crear un nuevo archivo como versión cifrada y luego eliminar los anteriores que son la versión no cifrada.

Vass
fuente
Interesante "sin tener que crear nuevos archivos" ...
phunehehe
¿Te refieres a montar como un sistema de archivos encriptado?
Faheem Mitha
@ FaheemMitha, también me gustaría evitar la ruta del sistema de archivos, suena complicado.
Vass
1
@Vass La ruta del sistema de archivos es el método más simple con diferencia. Le facilitará la vida si no rechaza las soluciones arbitrariamente.
Gilles 'SO- deja de ser malvado'
NOTA: encfs no se considera seguro: askubuntu.com/questions/813290/encfs-insecure-what-to-use-now
Keiran Raine

Respuestas:

23

Use encfs (disponible como paquete en la mayoría de las distribuciones). Para configurar:

mkdir ~/.encrypted ~/encrypted
encfs ~/.encrypted ~/encrypted
# enter a passphrase
mv existing-directory ~/encrypted

La llamada inicial a encfsconfigurar un sistema de archivos cifrado. Después de ese punto, cada archivo en el que escribe ~/encryptedno se almacena directamente en el disco, se cifra y se guardan los datos cifrados ~/.encrypted. El encfscomando deja un demonio en ejecución, y este demonio maneja el cifrado (y descifrado cuando lee un archivo desde abajo ~/encrypted).

En otras palabras, para los archivos bajo ~/encrypted, acciones tales como lecturas y escrituras no se traducen directamente a lectura o escritura desde el disco. Los realiza el encfsproceso, que cifra y descifra los datos y utiliza el ~/.encrypteddirectorio para almacenar el texto cifrado.

Cuando haya terminado de trabajar con sus archivos por el momento, desmonte el sistema de archivos para que no se pueda acceder a los datos hasta que vuelva a escribir su contraseña:

fusermount -u ~/encrypted

Después de ese punto, ~/encryptedvolverá a estar un directorio vacío.

Cuando más tarde desee trabajar en estos archivos nuevamente, monte el sistema de archivos cifrados:

encfs ~/.encrypted ~/encrypted
# enter your passphrase

Esto, nuevamente, hace que los archivos encriptados ~/.encryptedsean accesibles bajo el directorio ~/encrypted.

Puede cambiar el punto de montaje ~/encryptedcomo desee: encfs ~/.encrypted /somewhere/else(pero monte el directorio cifrado solo una vez a la vez). Puede copiar o mover el texto cifrado (pero no mientras está montado) a una ubicación diferente o incluso a una máquina diferente; todo lo que necesita hacer para trabajar en los archivos es pasar la ubicación del texto cifrado como primer argumento encfsy la ubicación de un directorio vacío como segundo argumento.

Gilles 'SO- deja de ser malvado'
fuente
La respuesta es muy útil y práctica. Le agradecería mucho si pudiera agregar más texto para explicar lo que está haciendo cada operación si eso no es una molestia para usted. ¿Y podría explicar qué se entiende por sistema de archivos en este contexto y la relevancia del montaje?
Vass
1
@Vass He actualizado mi respuesta con más explicaciones. Para obtener información sobre sistemas de archivos y montaje, consulte ¿Qué puntos de montaje existen en un sistema Linux típico? y ¿Qué se entiende por montar un dispositivo en Linux?
Gilles 'SO- deja de ser malvado'
Esa es una explicación asombrosa. Siento que aprendí mucho. Y los enlaces adicionales ayudan. Por lo tanto, el sistema de archivos creado por encfs es 'bloques mezclados del archivo original' y a través de encfs puedes navegar y leerlo; porque el sistema de archivos original no es compatible para usar estos bloques de datos. y el directorio encriptado está oculto para no ingresar por accidente. y si lo hicieras no verías nada?
Vass
1
@Vass “el sistema de archivos creado por encfs es 'bloques mezclados del archivo original' y a través de encfs puedes navegar y leerlo”: sí, exactamente. El directorio ~/.encryptedcontiene el texto cifrado; puede acceder a él sin pasar encfs, pero solo verá datos cifrados allí.
Gilles 'SO- deja de ser malvado'
2

No quiero tener que crear un nuevo archivo como versión encriptada y luego, eliminar los anteriores que son la versión no encriptada

Pero ese es exactamente el escenario que ha descrito ... "poder cifrar el directorio o descifrarlo"

Sospecho que la solución que está buscando es un FUSIBLE encriptado o similar . El sistema de archivos se almacena en un archivo cifrado y cuando se monta (con una frase de contraseña) hay acceso transparente a través de la capa VFS.

symcbean
fuente
crear un nuevo archivo y eliminar el anterior es una ruta .zip con protección por contraseña. No entiendo el sistema de archivos y la ruta de montaje a la que se refiere. ¿No hay algún programa que mezcle el archivo de alguna manera y luego pueda volver a ponerlo en orden?
Vass
Sí, aquí hay una lista completa de sistemas de archivos cifrados FUSE. La ruta zip es la más simple
bsd
@Vass No entiendo lo que quieres decir con "la ruta zip": no hay zip involucrado. El texto sin formato nunca se almacena en el disco (eso sería mucho más complicado y anularía la mayor parte del propósito del cifrado).
Gilles 'SO- deja de ser malvado'
2
La ruta zip / ruta zip es comprimir recursivamente un directorio con las opciones de cifrado / contraseña. Sin embargo, cuando se quiere acceder a un archivo, se debe extraer el archivo no cifrado del archivo zip, leer el archivo y luego eliminarlo o editarlo y luego actualizar el archivo zip con el nuevo archivo, luego eliminar el archivo intermedio. Está buscando la transparencia de un sistema de archivos cifrados pero a nivel de directorio. Yo y otros sugerimos FUSE con un fs cifrado. Sin embargo, "simple" es una cuestión de perspectiva y experiencia.
bsd
@bdowning, sí, lo articulaste correctamente. No entiendo los sistemas de archivos y su funcionamiento. Trabajaría ciegamente con los comandos sin comprender los conceptos.
Vass