Si quieres tener un fichero cifrado, de manera que nadie pueda ver su contenido a no ser que sepa la contraseña, puedes usar "gpg" para cifrarlo y descifrarlo. Sin embardo, su uso es un poco complicado.
Por lo tanto, he escrito un pequeño script, llamado "gpg-vi", que pregunta una contraseña, y permite editar un fichero cifrado simétricamente usando GnuPG con esa contraseña.
El script no permite que nadie más en la máquina pueda ver el contenido del fichero, pero atención: el script escribe el contenido del fichero en claro en un fichero temporal, de manera que alguien más que use tu UID, o root, podría ver el contenido mientras la edición no haya terminado (o incluso después, porque el contenido puede estar aún en algún lugar del disco después de borrar el fichero).
## The product of my hobby, for your entertainment:
# If no filename given, or -h or --help: show usage, exit
[[ "$1" = '-h' ]] || [[ "$1" = '--help' ]] || ! [[ "$1" ]] && { echo "Usage: $0 <filename>" 1>&2; exit 1;}
# Create temporary file, if tempfile is not available: use mktemp
tmp=$(tempfile -p egpg- -s .tmp -d "$HOME" 2>/dev/null || mktemp "$HOME/egpg-XXXXXX.tmp") ||\
{ echo 'temporary file could not be created'; exit 1; }
read -s -u 0 -p 'Please enter passphrase: ' pw
echo -n ' ' # Countering 3 backspacess...
Md5(){
echo $(md5sum "$tmp" 2>/dev/null || md5 "$tmp" 2>/dev/nul) && return
echo "Neither md5sum nor md5 is present"
exit 1
}
if [[ -f "$1" ]]
then # File exists; get password, decrypt if possible, take md5
if ! gpg -q --force-mdc --passphrase-fd 0 -o - "$1" >"$tmp" 2>/dev/null <<<"$pw"
then
rm -f -- "$tmp"
echo "File $1 is not gpg encrypted"
exit 1
fi
MD5OLD=$(Md5)
else # File doesn't exist, see if it can be created
>"$1" || { echo "Can't create file $1"; exit 1;}
fi
# Edit the file (whether it pre-existed or is new), take the md5
"${VISUAL:-${EDITOR:-vi}}" "$tmp"
MD5NEW=$(Md5)
# If no error and the file is changed: encrypt, remove temporary file
! (($?)) && ! [[ "$MD5OLD" = $MD5NEW ]] \
&& gpg -q --force-mdc --passphrase-fd 0 -c -o - "$tmp" >"$1" 2>/dev/null <<<"$pw"
shred -u "$tmp" 2>/dev/null || srm -ll "$tmp" 2>/dev/null || rm -f -- "$tmp"
exit 0
Nuevo comentario
Por favor, escribe tu nombre y lo que quieras decir :-)