A maneira mais simples de proteger com senha um diretório e seu conteúdo sem precisar criar novos arquivos?

22

Gostaria de proteger com senha ou criptografar um diretório e todos os arquivos nele (para toda a árvore de diretórios abaixo dele). Eu não quero incomodar todo o diretório pessoal, quero um diretório específico com alguns arquivos e pastas nele. Gostaria de poder criptografar o diretório ou descriptografá-lo usando uma senha. A linha de comando seria mais agradável de usar. Não quero criar um novo arquivo como uma versão criptografada e excluir os anteriores, que são a versão não criptografada.

Vass
fonte
Interessante "sem ter que criar novos arquivos" ...
phunehehe
Você quer dizer montar como um sistema de arquivos criptografado?
Faheem Mitha
@FaheemMitha, eu também gostaria de evitar a rota do sistema de arquivos, parece complicado.
Vass
1
@Vass A rota do sistema de arquivos é de longe o método mais simples. Você facilitará sua vida se não rejeitar soluções arbitrariamente.
Gilles 'SO- stop be evil'
NOTA: encfs não é considerado seguro: askubuntu.com/questions/813290/encfs-insecure-what-to-use-now
Keiran Raine

Respostas:

23

Use encfs (disponível como um pacote na maioria das distribuições). Para configurar:

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

A chamada inicial para encfsconfigurar um sistema de arquivos criptografado. Após esse ponto, todos os arquivos em que você escreve ~/encryptednão são armazenados diretamente no disco, são criptografados e os dados criptografados são armazenados ~/.encrypted. O encfscomando deixa um daemon em execução e esse daemon lida com a criptografia (e descriptografia quando você lê um arquivo abaixo ~/encrypted).

Em outras palavras, para arquivos em baixo ~/encrypted, ações como leituras e gravações não se traduzem diretamente na leitura ou gravação do disco. Eles são executados pelo encfsprocesso, que criptografa e descriptografa os dados e usa o ~/.encrypteddiretório para armazenar o texto cifrado.

Quando terminar de trabalhar com seus arquivos, desmonte o sistema de arquivos para que os dados não possam ser acessados ​​até que você digite sua senha novamente:

fusermount -u ~/encrypted

Após esse ponto, ~/encryptedserá um diretório vazio novamente.

Quando mais tarde você quiser trabalhar nesses arquivos novamente, monte o sistema de arquivos criptografado:

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

Isto, mais uma vez, faz com que os arquivos criptografados em ~/.encryptedacessível sob o diretório ~/encrypted.

Você pode alterar o ponto de montagem ~/encryptedcomo desejar: encfs ~/.encrypted /somewhere/else(mas monte o diretório criptografado apenas uma vez por vez). Você pode copiar ou mover o texto cifrado (mas não enquanto estiver montado) para um local diferente ou mesmo para uma máquina diferente; tudo o que você precisa fazer para trabalhar com os arquivos é passar o local do texto cifrado como o primeiro argumento encfse o local de um diretório vazio como o segundo argumento.

Gilles 'SO- parar de ser mau'
fonte
a resposta é muito útil e prática. Eu apreciaria muito se você pudesse adicionar mais algum texto para explicar o que cada operação está fazendo, se isso não lhe incomoda. E você poderia explicar o que se entende por sistema de arquivos nesse contexto e a relevância da montagem?
Vass
1
@Vass Atualizei minha resposta com mais explicações. Para obter informações detalhadas sobre sistemas de arquivos e montagem, consulte Quais pontos de montagem existem em um sistema Linux típico? e O que significa montar um dispositivo no Linux?
Gilles 'SO- stop be evil'
Essa é uma explicação incrível. Eu sinto que aprendi muito. E os links extras ajudam. Portanto, o sistema de arquivos criado pelo encfs é 'desordenado em blocos do arquivo original' e através do encfs você pode navegar e ler; porque o sistema de arquivos original não é compatível para usar esses blocos de dados. e o diretório criptografado está oculto para não entrar nele por acidente. e se você visse nada?
Vass
1
@Vass “o sistema de arquivos criado pelo encfs é 'desordenado em blocos do arquivo original' e através do encfs você pode navegar e ler”: sim, exatamente. O diretório ~/.encryptedcontém o texto cifrado; você pode acessá-lo sem passar encfs, mas verá apenas dados criptografados lá.
Gilles 'SO- stop be evil'
2

Não quero criar um novo arquivo como uma versão criptografada e, em seguida, excluir os anteriores que são a versão não criptografada

Mas esse é exatamente o cenário que você descreveu .... "seja capaz de criptografar ou descriptografar o diretório"

Eu suspeito que a solução que você está procurando é um FUSE criptografado ou similar . O sistema de arquivos é armazenado em um arquivo criptografado e, quando montado (com uma senha), há acesso transparente via camada VFS.

symcbean
fonte
criar um novo arquivo e excluir anterior é uma rota .zip com proteção por senha. Não entendo o sistema de arquivos e a rota de montagem a que você se refere. Não existe algum programa que atrapalha o arquivo de alguma forma e depois pode colocá-lo em ordem novamente?
Vass
Sim, aqui está uma lista completa dos sistemas de arquivos criptografados pelo FUSE. O caminho zip é o mais simples
BSD
@Vass Não entendo o que você quer dizer com “o caminho do zip”: não há zip envolvido. O texto simples nunca é armazenado no disco (isso seria muito mais complicado e derrotaria a maior parte do objetivo da criptografia).
Gilles 'SO- stop be evil'
2
A rota zip / caminho zip é compactar recursivamente um diretório com as opções de criptografia / senha. No entanto, quando se deseja acessar um arquivo, é necessário extrair o arquivo não criptografado do zip, ler o arquivo e excluir ou editar o arquivo e atualizar o zip com o novo arquivo e excluir o arquivo intermediário. Ele está buscando a transparência de um sistema de arquivos criptografado, mas no nível de diretório. Eu e outros sugerimos o FUSE com um fs criptografado. "Simples", porém, é uma questão de perspectiva e experiência.
BSD
@downdown, sim, você o articulou corretamente. Eu não entendo os sistemas de arquivos e sua operação. Eu trabalhava cegamente com os comandos sem entender os conceitos.
Vass