OpenBSD / PostgreSQL / Authentification

!
Warning: This post is over 365 days old. The information may be out of date.

Si vous êtes un utilisateur d’OpenBSD et de PostgreSQL, vous pouvez utiliser l’authentification BSD pour vous authentifier sur vos bases. Nous allons voir comment faire cela.

Installation de PostgreSQL

Sur mon système, je suis loggué en tant qu’utilisateur pea et je dispose des droits suffisants via doas.

L’installation se fait de manière classique:

$ doas pkg_add postgresql-server
quirks-2.395 signed on 2017-11-27T16:02:16Z
postgresql-server-9.6.6:postgresql-client-9.6.6: ok
postgresql-server-9.6.6: ok
The following new rcscripts were installed: /etc/rc.d/postgresql
See rcctl(8) for details.
Look in /usr/local/share/doc/pkg-readmes for extra documentation.

Si vous n’êtes pas familier avec OpenBSD, je vous invite à lire le fichier /usr/local/share/doc/pkg-readmes/postgresql-server-9.6.6 afin de voir les différentes options disponibles pour la finalisation de l’installation.

On continue le paramétrage:

$ doas su _postgresql
$ mkdir /var/postgresql/data
$ initdb -D /var/postgresql/data/ -U postgres -E UTF-8 -A md5 -W
The files belonging to this database system will be owned by user "_postgresql".
This user must also own the server process.

The database cluster will be initialized with locale "C".
The default text search configuration will be set to "english".

Data page checksums are disabled.

Enter new superuser password:
Enter it again:

fixing permissions on existing directory /var/postgresql/data ... ok
creating subdirectories ... ok
selecting default max_connections ... 30
selecting default shared_buffers ... 128MB
selecting dynamic shared memory implementation ... posix
creating configuration files ... ok
running bootstrap script ... ok
performing post-bootstrap initialization ... ok
syncing data to disk ... ok

Success. You can now start the database server using:

pg_ctl -D /var/postgresql/data/ -l logfile start

Configuration

Maintenant nous allons configurer PostgreSQL pour pouvoir utiliser l’authentification BSD. Pour cela, il va falloir:

  • Ajouter l’utilisateur _postgresql (celui qui fait tourner PostgreSQL) dans le group auth

    $ doas usermod -G auth _postgresql
    
  • Ajouter une ligne dans le pg_hba.conf afin de spécifier que nous allons passer par l’authentification BSD

    local	all		pea		bsd
    

Astuce: cette méthode n’est pas mentionnée dans le fichier pg_hba.conf

Attention: l’utilisateur pea doit exister dans PostgreSQL aussi !

Test

  • On démarre le serveur

    $ doas /etc/rc.d/postgresql start
    postgresql(ok)
    
  • Création de l’utilisateur pea et d’une base

    $ psql -U postgres 
    Password for user postgres: 
    psql (9.6.6)
    Type "help" for help.
    
    postgres=# CREATE ROLE pea LOGIN ;
    CREATE ROLE
    postgres=# CREATE DATABASE pea OWNER pea ;
    CREATE DATABASE
    
  • On teste

$ psql 
Password: 
psql (9.6.6)
Type "help" for help.

pea=> select user ;
┌──────────────┐
│ current_user │
├──────────────┤
│ pea          │
└──────────────┘
(1 row)

pea=> select version();
┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│                                                                    version                                                                    │
├───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ PostgreSQL 9.6.6 on x86_64-unknown-openbsd6.2, compiled by OpenBSD clang version 5.0.0 (tags/RELEASE_500/final) (based on LLVM 5.0.0), 64-bit │
└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
(1 row)

Et voila 😃 !!

Related Posts