about summary refs log tree commit diff
path: root/pkgs/servers/sql/postgresql/patches
diff options
context:
space:
mode:
authoraszlig <aszlig@nix.build>2019-03-15 04:52:35 +0100
committeraszlig <aszlig@nix.build>2019-03-15 04:52:35 +0100
commitef553788d01cd513ed620a4e2969919145989dfe (patch)
tree985bd08c9076b2c2090afb235277b6a4e87ed4ff /pkgs/servers/sql/postgresql/patches
parentb703c4d998ff9d07f902276a2f357f883292cf44 (diff)
postgresql: Move socket dir to /run/postgresql
The default, which is /tmp, has a few issues associated with it:

One being that it makes it easy for users on the system to spoof a
PostgreSQL server if it's not running, causing applications to connect
to their provided sockets instead of just failing to connect.

Another one is that it makes sandboxing of PostgreSQL and other services
unnecessarily difficult. This is already the case if only PrivateTmp is
used in a systemd service, so in order for such a service to be able to
connect to PostgreSQL, a bind mount needs to be done from /tmp to some
other path, so the service can access it. This pretty much defeats the
whole purpose of PrivateTmp.

We regularily run into issues with this in the past already (one example
would be https://github.com/NixOS/nixpkgs/pull/24317) and with the new
systemd-confinement mode upcoming in
https://github.com/NixOS/nixpkgs/pull/57519, it makes it even more
tedious to sandbox services.

I've tested this change against all the postgresql NixOS VM tests and
they still succeed and I also grepped through the source tree to replace
other occasions where we might have /tmp hardcoded. Luckily there were
very few occasions.

Signed-off-by: aszlig <aszlig@nix.build>
Cc: @ocharles, @thoughtpolice, @danbst
Diffstat (limited to 'pkgs/servers/sql/postgresql/patches')
-rw-r--r--pkgs/servers/sql/postgresql/patches/socketdir-in-run.patch13
1 files changed, 13 insertions, 0 deletions
diff --git a/pkgs/servers/sql/postgresql/patches/socketdir-in-run.patch b/pkgs/servers/sql/postgresql/patches/socketdir-in-run.patch
new file mode 100644
index 0000000000000..969f80ff8fc7f
--- /dev/null
+++ b/pkgs/servers/sql/postgresql/patches/socketdir-in-run.patch
@@ -0,0 +1,13 @@
+diff --git a/src/include/pg_config_manual.h b/src/include/pg_config_manual.h
+index 743401cb96..be5c5f61d2 100644
+--- a/src/include/pg_config_manual.h
++++ b/src/include/pg_config_manual.h
+@@ -179,7 +179,7 @@
+  * here's where to twiddle it.  You can also override this at runtime
+  * with the postmaster's -k switch.
+  */
+-#define DEFAULT_PGSOCKET_DIR  "/tmp"
++#define DEFAULT_PGSOCKET_DIR  "/run/postgresql"
+ 
+ /*
+  * This is the default event source for Windows event log.