Como evitar que o 'rlwrap' salve uma senha em um arquivo de histórico de entrada?

2

Estou usando o utilitário rlwrap dentro do seguinte alias do shell:

alias gp='rlwrap git push'

A finalidade deste gp alias é poder usar comandos básicos de edição de linha, como C-a ou C-e , para chegar ao início ou ao final da linha de comando, enquanto eu estou usando o git push comando.

Eu também configurei rlwrap para gravar o histórico de entrada de cada comando para o qual eu o utilizo, em um arquivo dedicado ( ~/.config/rlwrap/<command>_history ):

export RLWRAP_HOME="${HOME}/.config/rlwrap"

Quando eu uso o gp alias, preciso fornecer minhas credenciais, nome de usuário e senha, e rlwrap os salva em ~/.config/rlwrap/git_history .

É possível deixar rlwrap salvar o histórico de entrada de todos os comandos que eu uso, exceto as senhas, como por exemplo, no gp alias?

    
por user852573 02.07.2017 / 13:31

3 respostas

2

I have to give my credentials, username and password, and rlwrap saves them in ~/.config/rlwrap/git_history

Tem certeza de que rlwrap salva sua senha em seu arquivo histórico? Por design, a entrada que não é ecoada de volta é nunca colocada na lista de histórico (nesse caso, rlwrap ecoará seus pressionamentos de tecla como **** ) que eu verifiquei e, no meu pelo menos o sistema, é isso que acontece com git push também.

Se você realmente ver sua senha no arquivo de histórico, registre um bug em rlwrap s site do GitHub

    
por 18.07.2017 / 10:15
2

Acho que acabei de encontrar uma maneira de evitar que a linha de entrada atual seja salva. De man rlwrap :

SPECIAL KEYS
   Control + O
          Accept the current line, but don't put it in the history list. This action has a readline command name
          rlwrap-accept-line-and-forget

Portanto, em vez de validar uma linha com Enter , se eu fizer isso com C-o , ela não deverá ser salva.

Talvez eu também possa usar a opção -g , mas não tenho certeza se poderia criar um regex descrevendo uma senha, sem descrever uma entrada comum ao mesmo tempo:

       -g, --forget-matching regexp
          Forget  (i.e.  drop  from history list) all input lines that match the POSIX 1003.2 regular expression
          regexp.  The match is always case-insensitive. regexp may be an ordinary string. For more about  regu‐
          lar expressions, see  regex (7)
    
por 02.07.2017 / 13:41
1

Você pode substituir o arquivo de histórico padrão pela opção -H do rlwrap.

por exemplo. alias gp='rlwrap -H /dev/null git push'

    
por 22.07.2017 / 11:35