Como gravar arquivos criptografados com o Vim

O editor de textos Vim tem suporte a diversos métodos de criptografia.
É possível guardar código ou qualquer outro texto (como senhas ou outras informações sensíveis) longe de olhares curiosos.

Uma vez criptografado, o texto não pode mais ser lido, sem a chave correta.
Tenha isto em mente, antes de usar este tipo de segurança em um arquivo — pra não ficar “trancado do lado de fora”.
Você pode enviar o texto codificado para outras pessoas, que usem o Vim no Windows ou no MacOS.
Se elas tiverem a senha para descriptografar, poderão ler o conteúdo da mensagem.

Para ativar a criptografia, a qualquer momento, use o comando ‘:X’.
Forneça a senha e a confirmação.
A criptografia será aplicada na hora de gravar o arquivo (:w).

criptografia no vim

É possível já abrir um arquivo com a criptografia ativada:

vim -x meu-arquivo-secreto.txt

Após este comando, o Vim iniciará pedindo uma nova chave de segurança para o seu arquivo.
Na próxima vez em que for abrir o arquivo, não precisa usar ‘-x’:

vim meu-arquivo-secreto.txt

Cuidados com a segurança criptográfica no Vim

Além de não perder a sua senha e usar, também, uma senha decente, há outros aspectos a levar em consideração, caso você se preocupe realmente com a sua segurança.
Quando tentar abrir o seu arquivo, só conseguirá ver um monte de caracteres desconexos.
texto criptografado

Tanto o texto contido no swap, quanto o do arquivo undo (usado para desfazer ações dentro do editor), são guardados sob criptografia.

Talvez não seja paranoia, mas a gente tem que falar sobre isso…
A codificação dos arquivos de swap e do undo são feitas bloco a bloco — fator que pode ajudar a reduzir o tempo necessário para um invasor quebrar sua senha.
Portanto, se quiser segurança extra, desative o swap e o undo (desfazer) para o arquivo.
Para desativar o recurso de swapping do Vim, entre no modo de comando (tecla ESC) e execute o seguinte:

:noswapfile

O comando abaixo, inicia a edição do arquivo ‘meus_segredos.txt’, com o swap desativado:

:noswapfile edit meus_segredos

Use o que achar melhor.
O lado ruim desta ação é que você pode perder texto, que ainda não tenha sido gravado, caso ocorra alguma queda de energia ou travamento no sistema operacional.
Já o arquivo undo pode ser desativado sem maiores problemas:

:set noundofile

Veja outros procedimentos adicionais (opcionais) de segurança que você pode adotar.
Para desativar também o backup automático:

:set nobackup

Para desativar o arquivo temporário:

:set nowritebackup

Para desativar a criptografia de um arquivo use o comando:

:set key=

Você também pode desativar o viminfo, que oferece informações sobre a sessão atual:

:set viminfo=

Quais métodos de criptografia estão disponíveis para o Vim

Você pode usar a opção ‘cryptmethod‘ (ou cm) para selecionar o tipo de criptografia a ser usado:

  1. zip: método mais fraco, porém rápido e mais difundido. Tem maior compatibilidade.
  2. blowfish: método mais seguro que o anterior.
  3. blowfish2: método atualizado e com segurança média para forte. É recomendado pela documentação oficial do Vim.

Para escolher o método de criptografia blowfish2, use o seguinte comando no Vim:

:setlocal cm=blowfish2

Você precisa fazer esta opção antes de começar a escrever no arquivo.
Quando você for abrir um arquivo, o Vim detecta automaticamente o método usado para criptografá-lo.
Você pode alterar o cryptmethod, ao abrir um arquivo, antes de começar editar.
Para definir permanentemente o método ou qualquer outro ajuste de que falamos neste post, edite o arquivo de configuração vimrc.

Como saber se a minha versão do Vim tem suporte a criptografia

Se você efetuou a instalação do aplicativo a partir dos repositórios oficiais da sua distro, não há muito o que fazer. E o suporte provavelmente já estará lá.
Alguns usuários preferem baixar e compilar o código fonte — entre outras coisas, isto lhes dá acesso a uma versão mais atual do aplicativo.
Neste caso, pode ser necessário compilar com a opção ‘cryptv’ selecionada.
Use a opção ‘–version’, combinada ao comando grep, para saber se a sua versão tem suporte a criptografia:


vim --version | grep crypt

Se o +cryptv estiver presente, então está tudo ok com a sua versão.

vim version

Referências

Como considerações finais, tenha cuidado para não começar a editar (e gravar em seguida) um arquivo criptografado, que você não descodificou adequadamente. Todo o conteúdo do arquivo será perdido, caso você o faça.
Lembre-se que o texto armazenado na memória não é criptografado.
Isto significa que o administrador do seu sistema, tecnicamente, poderá ler o seu conteúdo, enquanto você o estiver editando.
O manual do Vim também informa que, em uma máquina antiga (32 bit) é possível quebrar uma senha de 6 caracteres em menos de 1 dia, por força bruta, no caso de usar o cryptmethod zip.
Você pode iniciar o Vim com criptografia ativada e o swap desligado, com as seguintes opções:


vim -xn meuarquivo.txt

Leia mais:
https://linux-audit.com/using-encrypted-documents-with-vim/.

Como mover o cursor dentro do editor Vim

Fora do modo de inserção (i), dentro do modo de comando (Esc), é possível movimentar o cursor através das teclas direcionais do seu teclado ou usando teclas de comando para isto.
As teclas direcionais são as setinhas

 ↓   →   ←   ↑

Há também as teclas de comando:

  • h ← move o cursor um caractere para a esquerda
  • j ↓ move o cursor uma linha para baixo
  • k ↑ move o cursor uma linha para cima
  • l → move o cursor um caractere para a direita

As teclas de movimentação do cursor vão muito além disto no Vim.
Além de poder “andar” um caractere de cada vez, também há comandos para:

  1. se mover entre blocos de texto, como palavras, sentenças ou parágrafos
  2. se mover entre telas de um mesmo arquivo

Por que usar as teclas de comando em vez das direcionais do teclado?

Não se esqueça: tudo no Vi ou no Vim, é pensado para a máxima produtividade de quem digita.
Claro que “o que é produtivo e satisfatório para um, pode não ser para outro”.
Cabe a você decidir se vale a pena incorporar uma maneira nova de fazer as coisas ou não.
Aprender a usar este método de movimentação dentro do texto, vai tomar alguns minutos ou talvez mais.
Ao se permitir o aprendizado, você pode perceber que ele poupa tempo, no modo de comando.
A principal vantagem é que este caminho possibilita posicionar o cursor aonde você quiser no texto, sem precisar retirar a mão do centro do teclado.

Use valores numéricos para ter mais controle sobre a movimentação

Você pode indicar por quantos caracteres ou linhas o cursor irá se mover, dentro do seu texto.
Veja estes exemplos:

  1. 4l — o comando faz o cursor ‘andar’ 4 espaços para a direita
  2. 5j — o comando faz o cursor se mover 5 linhas para cima

Desta maneira, o Vim oferece meios de multiplicar os efeitos de um comando antes de sua execução.

Mais comandos para mover o cursor no Vim

Para se movimentar por entre blocos de texto, use os seguintes comandos de teclado:

  • 0 — (zero) para ir para o início de uma sentença ou parágrafo. Equivale a Home.
  • $ — para ir para o final de um parágrafo. Equivale a End.
  • w — (word) se move uma palavra de cada vez para frente.
  • b — (backwards?) se move uma palavra de cada vez para trás.
  • – — sobe uma linha.
  • + — desce uma linha.

Obviamente, as teclas + e – fogem daquele objetivo de realizar uma movimentação mais natural no teclado.

Uma linha, no Vim, não é a mesma coisa que a sua representação visível, na tela, com 80 colunas.
Uma linha é um bloco de texto compreendido entre uma quebra de linha e outra.
Em outras palavras, começa com um Enter e termina no próximo Enter.

Em todas estas teclas é possível acrescentar argumentos numéricos para multiplicar os efeitos de cada comando. Por exemplo:

  1. 4b — para mover 4 palavras para trás
  2. 5- — para subir 5 linhas

Você pode usar o comando G para ir até o fim do arquivo.
Com argumentos numéricos, é possível dizer ao comando G exatamente em que linha o cursor deve ficar.
Desta forma, 1G leva o cursor para o início do arquivo e 42G leva até a linha 42.

erro na linha 15
Quando você está tentando executar um script ou compilar código, frequentemente pode se deparar com avisos de erros.
Os avisos podem indicar exatamente em que linha do seu programa há alguma inconsistência.

Leia mais sobre o editor Vim.

Como lidar com um processo zumbi no Linux

De forma bem simplificada (ou em termos leigos), processo zumbi é aquele que ainda pode ser visto na tabela de processos, mesmo que já tenha sido finalizado.
Processos nestas condições também são chamados “defuntos” (ou defunct).

Para entender como os zumbis são criados, é necessário compreender como os processos são retirados do espaço da memória do sistema, após serem finalizados
Apesar da coincidência de temas, não há nada de macabro neste post.
Sob o ponto de vista técnico, a presença de zumbis no seu sistema é uma realidade, provavelmente, constante — e normalmente não é preocupante.

Como os zumbis aparecem

A cada vez que um processo completa seu ciclo e termina sua execução com sucesso, ele desocupa a memória e avisa que “morreu” ao processo que lhe deu origem (processo pai).
Neste momento, o pai deve executar uma chamada de sistema (system call) WAIT, que faz a leitura do estado do filho morto.
Quando o WAIT termina de ser executado, o cadáver é removido da memória — e a vida segue.
O problema aparece quando há defeitos no código do processo pai ou, por alguma razão, este é incapaz de ler o estado do processo filho.
Neste caso, a chamada de sistema pode simplesmente não ocorrer.
Como consequência, o cadáver não é removido, permanece na memória e continua aparecendo na tabela de processos.
Toda esta operação, descrita acima, é muito rápida.
Os zumbis são previstos pelo Linux.
São inócuos e, na maioria das vezes, nem são notados.
Muitos tem PID 1 como pai, que é o próprio init.
O init executa um processo de limpeza periódica que acaba por remover naturalmente os zumbis do sistema.
Por isto, é seguro dizer que não há com que se preocupar.

Como encontrar zumbis no Linux

Use o comando ps para checar o seu sistema:


ps axu | grep Z

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
justinc+  1920  0.0  0.0      0     0 tty2     Z+   nov07   0:00 [single] 
justinc+ 20324  0.0  0.0  12792   932 pts/1    S+   17:57   0:00 grep --color=auto Z

Observe a coluna STAT, que informa o estado de cada processo listado.
A letra Z indica quando um processo está em estado zombie.

How to find zombies

Como matar zumbis

Você não pode matar o que já está morto!

Não é possível terminar processos zumbis. Eles já estão finalizados.
Se a situação te preocupa, é possível informar ao processo pai que “sua criança” está morta — para que rodem a chamada de sistema WAIT.
Use o comando pstree para descobrir qual é o PID do processo pai.
Em seguida, é possivel enviar o sinal SIGCHLD para o PID do pai:

kill -s SIGCHLD ppid

Acima, substitua ppid pelo número do PID do processo pai.

Impacto da presença de processos zumbis no sistema

Como já foi dito, ocupam pouco espaço e sua presença, em geral, é inofensiva e sequer chega a ser percebida.
Mas há casos em que a quantidade de zumbis continua a crescer — às vezes rapidamente. Aí, sim, temos um problema.
Como consequencia da multiplicação dos zumbis, podemos nos deparar com 2 stuações desagradáveis:

  1. Cada zumbi mantem seu PID enquanto cria novos processos, com novos PIDs.
    Depois de um tempo, as possibilidades de criar novos PIDs sao exauridas pelo kernel do sistema.
  2. Mesmo que cada zumbi ocupe apenas uma quantidade muito pequena de memoria, um numero muito grande deles pode fazer a diferença e causar a lentidao ou, mesmo, o travamento do sistema.

Você pode agir individualmente em relação a cada zumbi… ou não.
Pode ser legal mostrar aos seus amigos que você tem uma ou outra “criatura” destas habitando o seu sistema, temporariamente.
É possível que o seu amigo também tenha…
Só uma rápida e crescente multiplicação deles é que irá exigir uma medida mais drástica: reboot, para limpar o sistema.

Como remapear teclas no Linux

Há várias situações em que remapear parte do seu teclado pode ser muito útil.
Um teclado danificado pode ser uma delas.

Há casos em que o usuário adquire um teclado limitado pelo próprio fabricante — ou seja, vem sem alguma tecla importante, como o “Num Lock”.

O procedimento é indicado em casos de teclas danificadas ou ausentes.

No meu teclado Dell WK636p (ABNT 105 teclas) há algumas teclas em pares (Shift, Ctrl etc.)
Neste post, descrevo como fazer com que o Linux substitua o sinal de uma por outra.
Como exemplo prático, vamos remapear a tecla “Shift esquerda” para “Num Lock”.
Você pode ajustar facilmente o meu exemplo às suas necessidades depois.
Com privilégios administrativos, use o seu editor de texto puro favorito para abrir o arquivo pc:


vim /usr/share/X11/xkb/symbols/pc 

Localize a linha:

key  {    [ Shift_L      ]   };

e a substitua por:

key  {    [ Num_Lock         ]   };

como remapear teclas no linux
Ao analisar o arquivo de mapeamento, é fácil perceber que o procedimento pode ser readequado para a maioria das teclas.
Pode ser necessário reiniciar a sessão para as edições terem efeito.

O editor QTM foi feito para blogar offline

Poder blogar, escrever seus textos, longe de qualquer conexão à Internet pode dar uma sensação de liberdade imensa.
Ter esta liberdade, permite produzir seu conteúdo nas condições mais adversas ou, pelo contrário, com mais conforto.

qtm editor main screen

Estar desligado da Internet pode ajudar a compôr um ambiente mais criativo e mais produtivo.

O QTM é um editor de textos que permite, ao toque de um botão, conectar e enviar o seu texto para o site em que seu blog está hospedado.
Além disto, como qualquer editor offline, ajuda a organizar localmente toda a sua produção.
Neste artigo, vou apresentar o QTM, disponível nos repositórios de várias distribuições GNU/Linux.

O aplicativo tem suporte a 7 plataformas de CMS e permite cadastrar várias contas.
Se você escreve para blogs diferentes, pode concentrar o seu trabalho em uma única ferramenta.

Meus exemplos, foram executados em uma máquina rodando o Debian 9.
Quem usa distribuições derivadas desta não vai ter problemas para encontrar o aplicativo nos repositórios oficiais.
O editor tem o modo de edição em texto puro (meu preferido) e o modo de edição WYSIWYG (what you see is what you get) — e suporte a Markdown.
Veja como instalar:


sudo apt install qtm

Como configurar o QTM

qtm blogging welcome
O QTM vai pedir algumas configurações iniciais, logo após a instalação.
Esta parte é baseada em 2 estágios.
No primeiro, você pode selecionar como deseja que o editor se comporte, para tornar mais fácil o seu trabalho.
No segundo, são pedidas as informações de conexão, necessárias para “subir” o conteúdo para o seu site.

Vou me ater às configurações principais, necessárias para ter o mínimo de funcionalidade.
As tela iniciais, eu deixei exatamente como estavam.

O mais importante é informar o aplicativo sobre a sua plataforma de CMS (Content Management System ou sistema de gestão de conteúdo) e como se conectar a ela.
O restante dos ajustes, podem ser feitos on the go, ou seja, à medida em que se vai usando o programa.
qtm configuration window
Não importa para quantos blogs você costuma enviar conteúdo. A ferramenta aceita incluir quantas contas você precisar.

  1. Clique em “New account” e informe o “Name” da nova conta de blog.
    Use um nome que seja fácil para você se lembrar.
  2. Na linha “Hosted blog type”, informe uma das plataformas à qual o QTM tem suporte:
    • WordPress.com.
    • WordPress hospedado no seu próprio site.
    • TypePad
    • SquareSpace
    • Movable Type
    • Drupal
    • TextPattern
  3. Em seguida informe A URI completa do seu blog. Este dado será usado para preencher automaticamente o campo “Endpoint”.
  4. Informe o nome de usuário (login name) e a sua senha (password).
  5. Por fim, há uma lista de itens clicáveis para escolher.
    Eu optei por selecionar todos.

Conclusão sobre o QTM

É claro que usei o QTM para escrever este post.
Foi maravilhoso poder escrever no meu canto favorito da casa, aonde a Internet nunca “pega” direito.
Com mais de 1000 posts escritos com o uso da ferramenta de edição nativa do WordPress, nem tudo foi fácil.
Não conheço, com profundidade, outras plataformas de blogging, portanto o WP é a minha única referência para comparações.
Senti falta de 2 coisas:

  1. Uma ferramenta de correção ortográfica — os editores nativos dos blogs que conheço não possuem este tipo de ferramenta, mas a gente sempre usa a do navegador.
    Não chega a ser um problema. Embora eu possa publicar diretamente do QTM, prefiro enviar meus textos como rascunho e, mais tarde, fazer a revisão dentro do editor do WordPress.
  2. Melhor suporte para incluir as imagens no blog — não encontrei possibilidade de incluir as imagens, armazenadas localmente, no texto.

Nada é perfeito e estes inconvenientes podem ser superados com algumas mudanças nos métodos de trabalho, sem perda na produtividade.