Primeiro de tudo: esteja ciente de que qualquer pessoa com acesso root e / ou físico ao seu sistema poderá interceptar as senhas digitadas. E quase não há nada que você possa fazer sobre isso. Acesso físico significa raiz e raiz significa acesso de baixo nível ao hardware.
Além disso, se alguém é um usuário em seu sistema, ele já está em seu "círculo interno", pois é muito mais fácil escalar privilégios (obter permissões de root) do que fazer login em um sistema aleatório. / p> Pessoalmente, eu uso um sistema similar, mas não guardo nenhuma informação que me custaria a economia ou a reputação profissional da minha vida - algo como minha senha do askubuntu. Além disso, eu implemento um pouco de criptografia primitiva, mas não óbvia (como omitir um sufixo comum de todas as senhas, substituir certas palavras ou números por outras palavras ou números, ou não armazenar as informações que tenho certeza que eu lembro e quais é crucial, como o nome do serviço a que uma determinada senha se refere, etc.).
Quanto ao shreeding no caso do comando mypasswd.display - por que você está criando um arquivo temporário? Por que não omitir a opção "-out" e apenas enviá-la diretamente para stdout?
Finalmente, tenho uma história em quadrinhos para você: trazida a você pelo XKCD