Je vais montrer comment accéder à une base de données postgresql depuis un poste client qui n'est pas sur la machine du serveur mais sur le même réseau. Tout d'abord dans le fichier postgresql.conf, dé-commenter et modifier la ligne listen_addresses:
listen_addresses = '*' # what IP address(es) to listen on;
Ensuite je m'occupe du fichier pg_hba.conf en ajoutant le lignes qui conviennent:
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all peer map=map01
# IPv4 local connections:
host all all 127.0.0.1/32 ident map=map01
# IPv4 lan connections
host all all 192.168.1.0/24 ident map=map02
# IPv6 local connections:
host all all ::1/128 ident map=map01
# IPv6 lan connections
host all all fe80::/10 ident map=map02
Puis j'adapte pg_ident.conf qui pourrait maintenant ressembler à:
# MAPNAME SYSTEM-USERNAME PG-USERNAME
map01 postgres postgres
map01 mifel michel
map01 mifel titi
map02 michel michel
map02 michel titi
map02 viviane titi
Les fichiers concernés se trouvent dans /var/lib/pgsql/data. J'utilise sudo nano pour procéder.
En ce qui concerne le pare-feu, les commandes à lancer sont:
mifel@fedora:~$ sudo firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" source address="192.168.1.0/24" service name="postgresql" accept'
mifel@fedora:~$ sudofirewall-cmd --permanent --add-rich-rule 'rule family="ipv6" source address="fe80::/10" service name="postgresql" accept'
mifel@fedora:~$ sudo firewall-cmd --reload
Le service postgresql ouvre le port 5432:
mifel@fedora:~$ firewall-cmd --permanent --service=postgresql --get-ports
5432/tcp
La commande hostnamectl m'informe que le nom 'hostname' n'est pas défini de manière statique: j'y remédie:
mifel@fedora:~$ sudo hostnamectl hostname fedora
Pour les connexions réseau je pouvais choisir dans pg_hba.conf une identification par mot de passe, mais j'ai préféré garder ident.
Donc je dois maintenant sur chaque poste client installer et activer oidentd (voir post précédent)
Ensuite pour le pare-feu:
michel@arcturus:~$ sudo firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" source address="192.168.1.0/24" service name="ident" accept'
michel@arcturus:~$ sudo firewall-cmd --permanent --add-rich-rule 'rule family="ipv6" source address="fe80::/10" service name="ident" accept'
michel@arcturus:~$ sudo firewall-cmd --reload
Le port 113 est maintenant ouvert:
michel@arcturus:~$ firewall-cmd --permanent --service=ident --get-ports
113/tcp
Et voilà: