summaryrefslogtreecommitdiff
path: root/gnu/system.scm
diff options
context:
space:
mode:
authorChris Lemmer-Webber <cwebber@dustycloud.org>2021-07-06 22:03:19 +0200
committerChristopher Lemmer Webber <cwebber@dustycloud.org>2021-07-29 11:32:08 -0400
commita7ac19851baab3fbcc40c4b2cf5b00a6ac9cd2f3 (patch)
tree3731cb92eecc360ecc886b6cffb1153b4c5ab9a6 /gnu/system.scm
parent5a1ce6cf70fcd386e56a325efafd7d73ea6cdfcf (diff)
services: setuid: More configurable setuid support.
New record <setuid-program> with fields for setting the specific user and group, as well as specifically selecting the setuid and setgid bits, for a program within the setuid-program-service. * gnu/services.scm (setuid-program-file-like-deprecated): New function. (setuid-program-service-type): Make use of setuid-program->activation-gexp. Adjust the extend property to handle <setuid-program>. * gnu/build/activation.scm (activate-setuid-programs): Update to expect a <setuid-record> list for each program entry. * gnu/system.scm: (operating-system-setuid-programs): Renamed to %operating-system-setuid-programs and replace it with new procedure. (operating-system-default-essential-services, hurd-default-essential-services): Replace operating-system-setuid-programs with %operating-system-setuid-programs. * gnu/system/setuid.scm: New file. * doc/guix.texi (Setuid Programs): Document <setuid-program>. Co-authored-by: Brice Waegeneire <brice@waegenei.re>
Diffstat (limited to 'gnu/system.scm')
-rw-r--r--gnu/system.scm14
1 files changed, 10 insertions, 4 deletions
diff --git a/gnu/system.scm b/gnu/system.scm
index a7c2b1bca42..11e7152be1b 100644
--- a/gnu/system.scm
+++ b/gnu/system.scm
@@ -7,7 +7,7 @@
7;;; Copyright © 2019 Meiyo Peng <meiyo.peng@gmail.com> 7;;; Copyright © 2019 Meiyo Peng <meiyo.peng@gmail.com>
8;;; Copyright © 2019, 2020 Miguel Ángel Arruga Vivas <rosen644835@gmail.com> 8;;; Copyright © 2019, 2020 Miguel Ángel Arruga Vivas <rosen644835@gmail.com>
9;;; Copyright © 2020 Danny Milosavljevic <dannym@scratchpost.org> 9;;; Copyright © 2020 Danny Milosavljevic <dannym@scratchpost.org>
10;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re> 10;;; Copyright © 2020, 2021 Brice Waegeneire <brice@waegenei.re>
11;;; Copyright © 2020 Florian Pelz <pelzflorian@pelzflorian.de> 11;;; Copyright © 2020 Florian Pelz <pelzflorian@pelzflorian.de>
12;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com> 12;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
13;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <jannek@gnu.org> 13;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <jannek@gnu.org>
@@ -74,6 +74,7 @@
74 #:use-module (gnu system locale) 74 #:use-module (gnu system locale)
75 #:use-module (gnu system pam) 75 #:use-module (gnu system pam)
76 #:use-module (gnu system linux-initrd) 76 #:use-module (gnu system linux-initrd)
77 #:use-module (gnu system setuid)
77 #:use-module (gnu system uuid) 78 #:use-module (gnu system uuid)
78 #:use-module (gnu system file-systems) 79 #:use-module (gnu system file-systems)
79 #:use-module (gnu system mapped-devices) 80 #:use-module (gnu system mapped-devices)
@@ -267,7 +268,7 @@
267 268
268 (pam-services operating-system-pam-services ; list of PAM services 269 (pam-services operating-system-pam-services ; list of PAM services
269 (default (base-pam-services))) 270 (default (base-pam-services)))
270 (setuid-programs operating-system-setuid-programs 271 (setuid-programs %operating-system-setuid-programs
271 (default %setuid-programs)) ; list of string-valued gexps 272 (default %setuid-programs)) ; list of string-valued gexps
272 273
273 (sudoers-file operating-system-sudoers-file ; file-like 274 (sudoers-file operating-system-sudoers-file ; file-like
@@ -671,7 +672,7 @@ bookkeeping."
671 (operating-system-environment-variables os)) 672 (operating-system-environment-variables os))
672 host-name procs root-fs 673 host-name procs root-fs
673 (service setuid-program-service-type 674 (service setuid-program-service-type
674 (operating-system-setuid-programs os)) 675 (%operating-system-setuid-programs os))
675 (service profile-service-type 676 (service profile-service-type
676 (operating-system-packages os)) 677 (operating-system-packages os))
677 other-fs 678 other-fs
@@ -701,7 +702,7 @@ bookkeeping."
701 (pam-root-service (operating-system-pam-services os)) 702 (pam-root-service (operating-system-pam-services os))
702 (operating-system-etc-service os) 703 (operating-system-etc-service os)
703 (service setuid-program-service-type 704 (service setuid-program-service-type
704 (operating-system-setuid-programs os)) 705 (%operating-system-setuid-programs os))
705 (service profile-service-type (operating-system-packages os))))) 706 (service profile-service-type (operating-system-packages os)))))
706 707
707(define* (operating-system-services os) 708(define* (operating-system-services os)
@@ -1065,6 +1066,11 @@ use 'plain-file' instead~%")
1065 ;; TODO: Remove when glibc@2.23 is long gone. 1066 ;; TODO: Remove when glibc@2.23 is long gone.
1066 ("GUIX_LOCPATH" . "/run/current-system/locale"))) 1067 ("GUIX_LOCPATH" . "/run/current-system/locale")))
1067 1068
1069(define (operating-system-setuid-programs os)
1070 "Return the setuid programs for OS, as a list of setuid-program record."
1071 (map file-like->setuid-program
1072 (%operating-system-setuid-programs os)))
1073
1068(define %setuid-programs 1074(define %setuid-programs
1069 ;; Default set of setuid-root programs. 1075 ;; Default set of setuid-root programs.
1070 (let ((shadow (@ (gnu packages admin) shadow))) 1076 (let ((shadow (@ (gnu packages admin) shadow)))