summaryrefslogtreecommitdiff
path: root/gnu/services.scm
diff options
context:
space:
mode:
authorTobias Geerinckx-Rice <me@tobias.gr>2023-07-23 02:00:00 +0200
committerTobias Geerinckx-Rice <me@tobias.gr>2024-08-11 02:00:00 +0200
commit71f0676a295841e2cc662eec0d3e9b7e69726035 (patch)
treea39d569981af5fbe9b19634a935c536709698915 /gnu/services.scm
parent4e58dfee6c7456d1e662f66041b8a157efe8710a (diff)
privilege: Add POSIX capabilities(7) support.
* gnu/system/privilege.scm (<privileged-program>): Add a field representing the program's POSIX capabilities. (privileged-program-capabilities): New public procedure. * doc/guix.texi (Privileged Programs): Document it. * gnu/build/activation.scm (activate-privileged-programs): Take a LIBCAP package argument providing setcap(8) to apply said capabilities. * gnu/services.scm (privileged-program->activation-gexp): Pass said package argument where supported. Include privileged-program-capabilities in the compatibility hack.
Diffstat (limited to 'gnu/services.scm')
-rw-r--r--gnu/services.scm9
1 files changed, 7 insertions, 2 deletions
diff --git a/gnu/services.scm b/gnu/services.scm
index 553ec93a6c7..610a2df3958 100644
--- a/gnu/services.scm
+++ b/gnu/services.scm
@@ -46,6 +46,7 @@
46 #:use-module (gnu packages base) 46 #:use-module (gnu packages base)
47 #:use-module (gnu packages bash) 47 #:use-module (gnu packages bash)
48 #:use-module (gnu packages hurd) 48 #:use-module (gnu packages hurd)
49 #:use-module (gnu packages linux)
49 #:use-module (gnu system privilege) 50 #:use-module (gnu system privilege)
50 #:use-module (srfi srfi-1) 51 #:use-module (srfi srfi-1)
51 #:use-module (srfi srfi-9) 52 #:use-module (srfi srfi-9)
@@ -899,12 +900,14 @@ FILES must be a list of name/file-like object pairs."
899 (setuid? (privileged-program-setuid? program)) 900 (setuid? (privileged-program-setuid? program))
900 (setgid? (privileged-program-setgid? program)) 901 (setgid? (privileged-program-setgid? program))
901 (user (privileged-program-user program)) 902 (user (privileged-program-user program))
902 (group (privileged-program-group program)) ) 903 (group (privileged-program-group program))
904 (capabilities (privileged-program-capabilities program)))
903 #~(privileged-program 905 #~(privileged-program
904 (setuid? #$setuid?) 906 (setuid? #$setuid?)
905 (setgid? #$setgid?) 907 (setgid? #$setgid?)
906 (user #$user) 908 (user #$user)
907 (group #$group) 909 (group #$group)
910 (capabilities #$capabilities)
908 (program #$program-name)))) 911 (program #$program-name))))
909 programs))) 912 programs)))
910 (with-imported-modules (source-module-closure 913 (with-imported-modules (source-module-closure
@@ -912,7 +915,9 @@ FILES must be a list of name/file-like object pairs."
912 #~(begin 915 #~(begin
913 (use-modules (gnu system privilege)) 916 (use-modules (gnu system privilege))
914 917
915 (activate-privileged-programs (list #$@programs)))))) 918 (activate-privileged-programs (list #$@programs)
919 #$(and (supported-package? libcap)
920 libcap))))))
916 921
917(define privileged-program-service-type 922(define privileged-program-service-type
918 (service-type (name 'privileged-program) 923 (service-type (name 'privileged-program)