PostgreSQL et SELinux à l'ère de systemd
Ce post se veut une mise à jour du post précédent sur le sujet. En effet, le module SELinux, les commandes utilisées ont évolué avec l’adoption de systemd. Les principes restent les mêmes.
Ce post se veut une mise à jour du post précédent sur le sujet. En effet, le module SELinux, les commandes utilisées ont évolué avec l’adoption de systemd. Les principes restent les mêmes.
Remarque
Ce post est partiellement obsolète, avec le passage à systemd. Voir la mise à jour.
J’avais déjà expérimenté un peu avec SELinux il y a deux ans sans
aller trop loin, parce que j’entendais souvent la phrase “Si on veut
de la sécurité, il faut SELinux” et surtout à cause de l’arrivée de
l’extension sepgsql
dans les modules contrib de PostgreSQL. Ça avait
donné une conf pour le Fosdem où finalement, j’ai plus parlé des
privilèges classiques que de SELinux.
Imbriquer des tablespaces n’a pas vraiment de sens dans PostgreSQL
surtout si on veut se prendre la tête avec des montages dans tous les
sens… Mais bon c’est permis, car PostgreSQL utilise uniquement les
liens symboliques dans $PGDATA/pg_tblspc
pour accéder au contenu des
tablespaces.
Comme j’annonçais précédemment, je contribue deux machines NetBSD à la BuildFarm de PostgreSQL. La compilation ne se fait automagiquement qu’après la configuration du client (écrit en Perl). Il n’est d’ailleurs pas forcément très convi à installer, c’est pourquoi je l’ai packagé pour pkgsrc : http://pkgsrc.se/wip/pgbuildfarm.
Ici encore, tout est dans le catalogue système de PostgreSQL, il suffit
de regarder dans la table pg_trigger
.
Dans le catalogue de PostgreSQL, qui donne plein d’information sur le
cluster et la base de données, la table pg_class
regroupe les
informations sur les tables, les séquences, les index, tout ce qui
contient des colonnes, appelé relation. L’un des champs disponibles est
reltuples
, il contient le nombre approximatif de lignes dans une
relation. C’est approximatif, ainsi ce n’est pas un donnée sure… La
preuve par l’exemple.
Avec PostgreSQL, on peut utiliser la requête suivante pour obtenir la taille de chacune des bases de données d’un cluster :
SELECT datname AS base,
pg_size_pretty(pg_database_size(oid)) AS taille
FROM pg_database;