En este artículo te explico cómo montar un recurso compartido de red (CIFS/SMB) de forma automática y segura, sin guardar contraseñas en texto plano, utilizando GPG (GNU Privacy Guard). También te muestro cómo automatizar el proceso sin intervención del usuario, ideal para tareas programadas como cron
.
Objetivo
Montar el recurso de red:
//servidor.ejemplo.com/CarpetaCompartida/
En el directorio local:
/mnt/compartido/
Con las credenciales:
- Usuario:
usuario_red
- Dominio:
dominio_local
- Contraseña:
ContraseñaSegura123
Sin dejar la contraseña expuesta y sin intervención humana.
Pasos a seguir
1. Crear archivo de credenciales
Primero, creamos un archivo temporal con las credenciales necesarias para el montaje:
echo -e "username=usuario_red\npassword=ContraseñaSegura123\ndomain=dominio_local" > ~/.smbcred
2. Generar una clave GPG sin frase de seguridad
Para que el proceso sea completamente automático (sin tener que ingresar la frase), se recomienda crear una clave GPG sin passphrase exclusiva para este montaje:
gpg --quick-generate-key "Montaje Automático <auto@ejemplo.com>" default default never
Puedes verificar que se creó con:
gpg --list-keys
3. Cifrar el archivo de credenciales
Ahora ciframos el archivo utilizando la clave recién creada:
gpg -e -r "Montaje Automático <auto@ejemplo.com>" ~/.smbcred
Esto generará un archivo ~/.smbcred.gpg
, que es el que usaremos en el script.
Luego, eliminamos de forma segura el archivo original:
shred -u ~/.smbcred
Script de montaje automático
Guarda el siguiente script como montar_recurso.sh
en una ubicación segura (por ejemplo, /usr/local/bin/montar_recurso.sh
):
#!/bin/bash # Variables CRED_GPG="$HOME/.smbcred.gpg" CRED_TMP="/tmp/.smbcred_mount" DESTINO="/mnt/compartido" RECURSO="//servidor.ejemplo.com/CarpetaCompartida/" # Verifica si existe el archivo cifrado if [ ! -f "$CRED_GPG" ]; then echo "❌ Archivo de credenciales cifrado no encontrado: $CRED_GPG" exit 1 fi # Descifra a archivo temporal (no requiere passphrase si la clave no la tiene) gpg -q -d "$CRED_GPG" > "$CRED_TMP" if [ $? -ne 0 ]; then echo "❌ Error al descifrar el archivo." exit 1 fi # Monta el recurso compartido mount -t cifs "$RECURSO" "$DESTINO" -o credentials="$CRED_TMP",vers=3.0 # Elimina el archivo temporal de credenciales shred -u "$CRED_TMP"
Permisos y ejecución
- Haz el script ejecutable:
chmod +x /usr/local/bin/montar_recurso.sh
2. Prueba su funcionamiento:
sudo /usr/local/bin/montar_recurso.sh
Automatizar con cron
Agrega la siguiente línea en el crontab
del sistema o del usuario root
para ejecutarlo automáticamente:
0 2 * * * root /usr/local/bin/montar_recurso.sh
Esto lo ejecutará todos los días a las 2:00 am.
Conclusión
Este método permite montar unidades de red de forma segura, automatizada y sin exponer contraseñas. Al usar GPG con una clave sin passphrase exclusiva para esta tarea, mantenemos un equilibrio adecuado entre seguridad y automatización.