doas: add NixOS binary dirs to safe PATH

I recently tried to give myself passwordless `doas` for `virsh` commands
(starting, stopping, and editing VMs), but `doas` was complaining that
it didn't know what `virsh` was.

This patch adds `/run/current-system/sw/{s,}bin` and `/run/wrappers/bin`
to the safe path, allowing system binaries to be discovered and executed
properly.
This commit is contained in:
Cole Helbling 2020-05-26 22:57:30 -07:00
parent a1d501b87e
commit 82f897333a
No known key found for this signature in database
GPG key ID: B37E0F2371016A4C
2 changed files with 30 additions and 0 deletions

View file

@ -0,0 +1,24 @@
From 9218347b8f833ab05d016dfba5617dcdeb59eb7b Mon Sep 17 00:00:00 2001
From: Cole Helbling <cole.e.helbling@outlook.com>
Date: Wed, 27 May 2020 08:02:57 -0700
Subject: [PATCH] add NixOS-specific dirs to safe PATH
---
doas.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/doas.c b/doas.c
index e253905..2fdb20f 100644
--- a/doas.c
+++ b/doas.c
@@ -234,6 +234,7 @@ int
main(int argc, char **argv)
{
const char *safepath = "/bin:/sbin:/usr/bin:/usr/sbin:"
+ "/run/current-system/sw/bin:/run/current-system/sw/sbin:/run/wrappers/bin:"
"/usr/local/bin:/usr/local/sbin";
const char *confpath = NULL;
char *shargv[] = { NULL, NULL };
--
2.26.2

View file

@ -26,6 +26,12 @@ stdenv.mkDerivation rec {
"--pamdir=${placeholder "out"}/etc/pam.d"
];
patches = [
# Allow doas to discover binaries in /run/current-system/sw/{s,}bin and
# /run/wrappers/bin
./0001-add-NixOS-specific-dirs-to-safe-PATH.patch
];
postPatch = ''
sed -i '/\(chown\|chmod\)/d' bsd.prog.mk
'';