Se você é o único usuário no sistema e ninguém pode acessar razoavelmente o seu computador sem suas permissões, basta bloquear o acesso usando este comando, conforme resposta de Zanna :
sudo chown root:root /my/secret/file.txt
sudo chmod 600 /my/secret/file.txt
Nesse caso, o arquivo pode ser lido e / ou gravado apenas pelo root
usuário. Isso é considerado "suficientemente seguro" se ninguém puder inicializar o seu computador sem a sua permissão ou levantar o disco rígido. Estamos usando o root
usuário nesse caso, porque root
ele sempre pode ler arquivos, mesmo que não tenha permissão. Ao usar o usuário root, reforçamos que apenas um usuário pode acessá-lo.
Se você deseja marcar o arquivo como imutável de qualquer forma, forma ou formulário, use o i
atributo para marcar o arquivo como imutável . Nesse caso, as permissões do arquivo estão bloqueadas e não podem ser alteradas sob nenhuma circunstância. Dessa forma, você pode executar o seguinte comando para tornar o arquivo inalterável e protegê-lo contra alterações de exclusão e permissão:
sudo chattr +i /my/secret/file.txt
Se você quiser alterá-lo, substitua por +i
com -i
para desbloquear o arquivo temporariamente. Veja a resposta de Rinzwind para uma visão mais aprofundada.
Agora, se outras pessoas tiverem acesso ao seu computador ( sudo
acesso remoto ou qualquer forma de acesso físico), isso se desfaz instantaneamente. Um invasor pode usar root
poderes para ler seu arquivo, inserir um Live USB ou apenas puxar seu disco rígido.
Portanto, precisamos criptografar o arquivo. Pessoalmente, prefiro usar "contêineres de arquivos", para que você possa ficar mais por lá e fazer com que cresça conforme necessário. chattr +i
ainda é recomendado para que o arquivo não seja excluído acidentalmente (ou alterado). Por fim, se você estiver usando uma imagem criptografada, poderá definir permissões para permitir que outras pessoas acessem um subconjunto muito limitado de arquivos quando o disco estiver montado, o que é bom para um servidor. Este guia estava originalmente disponível aqui e foi adaptado para uso aqui.
Primeiro, você deseja criar uma imagem de disco para seu uso. Neste exemplo, vamos fazer 5 GB.
dd if=/dev/zero bs=1M count=5000 of=~/NSA-Data-Dump-20161012.img
Em seguida, precisamos tornar sua imagem criptografada:
sudo cryptsetup luksFormat ~/NSA-Data-Dump-20161012.img
Você terá uma opção aqui para inserir sua senha de criptografia preferida. Feito isso, precisamos expor o dispositivo de bloco bruto:
sudo cryptsetup luksOpen ~/NSA-Data-Dump-20161012.img my-secret-device
No momento, temos um contêiner de arquivos descriptografado, mas não há sistema de arquivos e é tão bom quanto inútil. Vamos consertar isso:
sudo mkfs.ext4 /dev/mapper/my-secret-device
Agora, precisamos de um local para montar nossa nova partição. Nesse caso, eu vou colocar /crypt
. Como sou o usuário 1000, vou definir minha partição para permitir apenas que eu (e o root) leia / grave nela.
sudo mkdir /crypt
sudo mount /dev/mapper/my-secret-device /crypt -o umask=0700,gid=1000,uid=1000
Agora, posso usar minha ferramenta de arquivo para navegar /crypt
e armazenar todos os meus arquivos confidenciais lá. Quando terminar, precisarei desmontar e criptografar novamente minha partição.
sudo umount /crypt
sudo cryptsetup luksClose my-secret-device
Agora, vou definir partições apropriadas no meu arquivo de imagem, para que somente eu e o root possam acessá-lo e que não possa mais ser alterado.
chmod 400 ~/NSA-Data-Dump-20161012.img
sudo chattr +i ~/NSA-Data-Dump-20161012.img
Sempre que eu quiser abrir esse arquivo para leitura, só preciso executar estes dois comandos, que eu posso facilmente usar como alias:
sudo cryptsetup luksOpen ~/NSA-Data-Dump-20161012.img my-secret-device
sudo mount /dev/mapper/my-secret-device /crypt -o umask=0700,gid=1000,uid=1000,ro
Meus dados criptografados estarão disponíveis em /crypt
e permanecerão somente leitura e acessíveis apenas para mim e para o root.
Se eu quiser alterar o arquivo, preciso alterar as permissões e montar:
sudo chattr -i ~/NSA-Data-Dump-20161012.img
chmod 700 ~/NSA-Data-Dump-20161012.img
sudo cryptsetup luksOpen ~/NSA-Data-Dump-20161012.img my-secret-device
sudo mount /dev/mapper/my-secret-device /crypt -o umask=0700,gid=1000,uid=1000,ro
Agora, você precisa ter cuidado aqui, porque se um usuário tiver raiz no sistema, ele poderá modificar / destruir sua partição criptografada, tornando-a inútil. Eles também podem roubar dados da unidade, mas apenas quando estão abertos. No entanto, eles não podem roubar dados ou até ver que existem dados sem que você os abra explicitamente. Portanto, é seu dever garantir que seu sistema seja seguro o suficiente para não ter usuários root online quando você estiver abrindo seu volume criptografado.
TL; DR :
Faça o cofre:
dd if=/dev/zero bs=1M count=5000 of=~/NSA-Data-Dump-20161012.img
sudo cryptsetup luksOpen ~/NSA-Data-Dump-20161012.img my-secret-device
sudo mkfs.ext4 /dev/mapper/my-secret-device
Preencha o cofre:
sudo mkdir /crypt
sudo mount /dev/mapper/my-secret-device /crypt -o umask=0700,gid=1000,uid=1000
Bloqueie o cofre:
sudo umount /crypt
sudo cryptsetup luksClose my-secret-device
Congele o cofre:
chmod 400 ~/NSA-Data-Dump-20161012.img
sudo chattr +i ~/NSA-Data-Dump-20161012.img
Abra o cofre:
sudo cryptsetup luksOpen ~/NSA-Data-Dump-20161012.img my-secret-device
sudo mount /dev/mapper/my-secret-device /crypt -o umask=0700,gid=1000,uid=1000,ro