diff options
| author | Tobias Geerinckx-Rice <me@tobias.gr> | 2023-07-23 02:00:00 +0200 |
|---|---|---|
| committer | Tobias Geerinckx-Rice <me@tobias.gr> | 2024-08-11 02:00:00 +0200 |
| commit | 71f0676a295841e2cc662eec0d3e9b7e69726035 (patch) | |
| tree | a39d569981af5fbe9b19634a935c536709698915 /gnu/services.scm | |
| parent | 4e58dfee6c7456d1e662f66041b8a157efe8710a (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.scm | 9 |
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) |
