PostgreSQL utility come nascondere la password

Quando si usano gli strumenti a linea di comando sorge ben presto il problema di come fare per gestire la password, necessaria per il collegamento al db, senza indicarla nel comando che si inserisce in qualche script e che probabilmente qualche utente non autorizzato potrebbe vedere e carpire.
La soluzione si chiama .pgpass è un file memorizzato nella home directory dell’utente che contiene una riga del tipo:

hostname:port:database:username:password

Dove memorizzare tutte le password necessarie.
Il file deve avere le giuste permission cosa di cui ci si può accertare con un:

chmod 600 ./.pgpass

Attenzione: se le permission non sono corrette il file viene ignorato.

Le righe vuote o che iniziano con ‘#’ sono ignorate.
Il file viene scorso dall’alto verso il basso e appena eseguito il match viene usata la password corrispondente.
Nei primi 4 campi è possibile inserire un ‘*’ ad indicare qualsiasi valore.

Quindi eseguendo un comando del tipo:

pg_dumpall --hostname=localhost --port=5432 --database=postgres --username=fol --file=db.backup

aprirà il file .pgpass e cercherà la riga:

localhost:5432:postgres:fol

andando poi ad utilizzare la password corrispondente.

come fanno però le varie utiliti a localizzare il file ,pgpass ?
Ci pensa la variabile di sistema che si chiama: PGPASS e che immagino avrete ormai intuito conterrà qualcosa del tipo:

PGPASS=~/.bash_login

Per fare in modo che la variabile sia impostata ad ogni login inseriamo nel file:

~/.bashrc

i seguenti comandi:

PGPASS=~/.bash_login

export PGPASS

Alla prossima

Andrea

Lascia un commento