aboutsummaryrefslogtreecommitdiff
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2021 Brice Waegeneire <brice@waegenei.re>
;;; Copyright © 2022 Tobias Geerinckx-Rice <me@tobias.gr>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.

(define-module (gnu system privilege)
  #:use-module (guix records)
  #:export (privileged-program
            privileged-program?
            privileged-program-program
            privileged-program-setuid?
            privileged-program-setgid?
            privileged-program-user
            privileged-program-group
            privileged-program-capabilities

            file-like->setuid-program))

;;; Commentary:
;;;
;;; Data structures representing privileged programs: binaries with additional
;;; permissions such as setuid/setgid, or POSIX capabilities.  This is meant to
;;; be used both on the host side and at run time--e.g., in activation snippets.
;;;
;;; Code:

(define-record-type* <privileged-program>
  privileged-program make-privileged-program
  privileged-program?
  ;; File name of the program to assign elevated privileges.
  (program       privileged-program-program) ;file-like
  ;; Whether to set the setuid (‘set user ID’) bit.
  (setuid?       privileged-program-setuid? ;boolean
                 (default #f))
  ;; Whether to set the setgid (‘set group ID’) bit.
  (setgid?       privileged-program-setgid? ;boolean
                 (default #f))
  ;; The user name or ID this should be set to (defaults to root's).
  (user          privileged-program-user ;integer or string
                 (default 0))
  ;; The group name or ID we want to set this to (defaults to root's).
  (group         privileged-program-group ;integer or string
                 (default 0))
  ;; POSIX capabilities in cap_from_text(3) form (defaults to #f: none).
  (capabilities  privileged-program-capabilities ;string or #f
                 (default #f)))

(define (file-like->setuid-program program)
  "Simple wrapper to facilitate MAPping over a list of file-like objects and
make them setuid, a pattern just common enough to justify a special helper."
  (privileged-program (program program)
                      (setuid? #t)))
es/ada.scm, gnu/packages/admin.scm, gnu/packages/aidc.scm, gnu/packages/algebra.scm, gnu/packages/android.scm, gnu/packages/animation.scm, gnu/packages/arcan.scm, gnu/packages/assembly.scm, gnu/packages/audio.scm, gnu/packages/authentication.scm, gnu/packages/avr.scm, gnu/packages/axoloti.scm, gnu/packages/backup.scm, gnu/packages/bash.scm, gnu/packages/benchmark.scm, gnu/packages/bioconductor.scm, gnu/packages/bioinformatics.scm, gnu/packages/bittorrent.scm, gnu/packages/boost.scm, gnu/packages/build-tools.scm, gnu/packages/c.scm, gnu/packages/calendar.scm, gnu/packages/cdrom.scm, gnu/packages/check.scm, gnu/packages/chemistry.scm, gnu/packages/chez.scm, gnu/packages/clojure.scm, gnu/packages/code.scm, gnu/packages/compression.scm, gnu/packages/compton.scm, gnu/packages/coq.scm, gnu/packages/cpp.scm, gnu/packages/cran.scm, gnu/packages/crypto.scm, gnu/packages/curl.scm, gnu/packages/databases.scm, gnu/packages/datastructures.scm, gnu/packages/debug.scm, gnu/packages/disk.scm, gnu/packages/distributed.scm, gnu/packages/django.scm, gnu/packages/dlang.scm, gnu/packages/dns.scm, gnu/packages/docker.scm, gnu/packages/education.scm, gnu/packages/efi.scm, gnu/packages/elixir.scm, gnu/packages/emacs-xyz.scm, gnu/packages/embedded.scm, gnu/packages/emulators.scm, gnu/packages/engineering.scm, gnu/packages/erlang.scm, gnu/packages/fabric-management.scm, gnu/packages/file-systems.scm, gnu/packages/finance.scm, gnu/packages/firmware.scm, gnu/packages/flashing-tools.scm, gnu/packages/fonts.scm, gnu/packages/fontutils.scm, gnu/packages/fpga.scm, gnu/packages/game-development.scm, gnu/packages/games.scm, gnu/packages/genealogy.scm, gnu/packages/genimage.scm, gnu/packages/geo.scm, gnu/packages/gimp.scm, gnu/packages/gl.scm, gnu/packages/gnome-xyz.scm, gnu/packages/gnome.scm, gnu/packages/gnuzilla.scm, gnu/packages/golang.scm, gnu/packages/gpodder.scm, gnu/packages/graph.scm, gnu/packages/graphics.scm, gnu/packages/graphviz.scm, gnu/packages/groff.scm, gnu/packages/groovy.scm, gnu/packages/gtk.scm, gnu/packages/guile-xyz.scm, gnu/packages/guile.scm, gnu/packages/hardware.scm, gnu/packages/haskell-apps.scm, gnu/packages/haskell-xyz.scm, gnu/packages/hexedit.scm, gnu/packages/i2p.scm, gnu/packages/ibus.scm, gnu/packages/image-processing.scm, gnu/packages/image-viewers.scm, gnu/packages/image.scm, gnu/packages/ipfs.scm, gnu/packages/java-graphics.scm, gnu/packages/java-maths.scm, gnu/packages/java.scm, gnu/packages/javascript.scm, gnu/packages/jrnl.scm, gnu/packages/julia.scm, gnu/packages/jupyter.scm, gnu/packages/kodi.scm, gnu/packages/language.scm, gnu/packages/lego.scm, gnu/packages/less.scm, gnu/packages/libusb.scm, gnu/packages/linux.scm, gnu/packages/lirc.scm, gnu/packages/lisp-xyz.scm, gnu/packages/llvm.scm, gnu/packages/logging.scm, gnu/packages/lolcode.scm, gnu/packages/lua.scm, gnu/packages/lxde.scm, gnu/packages/lxqt.scm, gnu/packages/machine-learning.scm, gnu/packages/mail.scm, gnu/packages/markup.scm, gnu/packages/maths.scm, gnu/packages/maven.scm, gnu/packages/mes.scm, gnu/packages/messaging.scm, gnu/packages/monitoring.scm, gnu/packages/mpd.scm, gnu/packages/music.scm, gnu/packages/networking.scm, gnu/packages/node-xyz.scm, gnu/packages/ocaml.scm, gnu/packages/ocr.scm, gnu/packages/onc-rpc.scm, gnu/packages/opencl.scm, gnu/packages/opencog.scm, gnu/packages/pantheon.scm, gnu/packages/password-utils.scm, gnu/packages/patchutils.scm, gnu/packages/pdf.scm, gnu/packages/perl6.scm, gnu/packages/phabricator.scm, gnu/packages/popt.scm, gnu/packages/printers.scm, gnu/packages/prolog.scm, gnu/packages/protobuf.scm, gnu/packages/pulseaudio.scm, gnu/packages/python-crypto.scm, gnu/packages/python-web.scm, gnu/packages/python-xyz.scm, gnu/packages/qt.scm, gnu/packages/radio.scm, gnu/packages/rails.scm, gnu/packages/rdf.scm, gnu/packages/rednotebook.scm, gnu/packages/rpc.scm, gnu/packages/rsync.scm, gnu/packages/ruby.scm, gnu/packages/rust.scm, gnu/packages/scheme.scm, gnu/packages/screen.scm, gnu/packages/security-token.scm, gnu/packages/selinux.scm, gnu/packages/serialization.scm, gnu/packages/shells.scm, gnu/packages/shellutils.scm, gnu/packages/simh.scm, gnu/packages/sml.scm, gnu/packages/ssh.scm, gnu/packages/statistics.scm, gnu/packages/stenography.scm, gnu/packages/sync.scm, gnu/packages/syncthing.scm, gnu/packages/synergy.scm, gnu/packages/telephony.scm, gnu/packages/terminals.scm, gnu/packages/tex.scm, gnu/packages/texinfo.scm, gnu/packages/text-editors.scm, gnu/packages/textutils.scm, gnu/packages/time.scm, gnu/packages/tmux.scm, gnu/packages/tor.scm, gnu/packages/toys.scm, gnu/packages/version-control.scm, gnu/packages/video.scm, gnu/packages/vim.scm, gnu/packages/virtualization.scm, gnu/packages/vlang.scm, gnu/packages/vnc.scm, gnu/packages/vpn.scm, gnu/packages/web-browsers.scm, gnu/packages/web.scm, gnu/packages/wireservice.scm, gnu/packages/wm.scm, gnu/packages/wxwidgets.scm, gnu/packages/xdisorg.scm, gnu/packages/xml.scm, gnu/packages/xorg.scm, tests/lint.scm: Remove trailing ".git" from 'git-reference' URL. Ludovic Courtès 2020-07-11gnu: wsjtx: Update to 2.2.2....* gnu/packages/radio.scm (wsjtx-hamlib, wsjtx): Update to 2.2.2. Tobias Geerinckx-Rice 2020-07-11gnu: flrig: Update to 1.3.51....* gnu/packages/radio.scm (flrig): Update to 1.3.51. Tobias Geerinckx-Rice 2020-07-11gnu: rtl-sdr: Use HTTPS URL....* gnu/packages/radio.scm (rtl-sdr)[source]: Use HTTPS URL. Leo Famulari 2020-07-09gnu: flamp: Fix typo in description....* gnu/packages/radio.scm (flamp)[description]: Fix typo. Tobias Geerinckx-Rice 2020-07-03gnu: js8call: Update to 2.2.0....* gnu/packages/radio.scm (js8call): Update to 2.2.0. [inputs]: Use wsjtx-hamlib instead of regular hamlib. Guillaume Le Vaillant 2020-06-22gnu: js8call: Fix build....* gnu/packages/radio.scm (js8call)[inputs]: Use regular hamlib. Guillaume Le Vaillant 2020-06-22gnu: wsjtx: Update to 2.2.1....* gnu/packages/radio.scm (wsjtx-hamlib): Update to 2.2.1. [arguments]: Add a 'fix-tests' phase. (wsjtx): Update to 2.2.1. Guillaume Le Vaillant 2020-06-18gnu: Add multimon-ng....* gnu/packages/radio.scm (multimon-ng): New variable. Guillaume Le Vaillant 2020-05-30gnu: aptdec: Do not hard-code CC=gcc....* gnu/packages/radio.scm (aptdec)[arguments]: Do not hard-code CC=gcc in the make-flags. Use the compiler appropriate for the target. Arun Isaac 2020-05-29gnu: aptdec: Update source and home page URIs....* gnu/packages/radio.scm (aptdec)[source, home-page]: Update URI. Arun Isaac 2020-05-29gnu: Use 'cc-for-target' instead of custom implementations....* gnu/packages/compression.scm (ecm)[arguments]: In #:make-flags, remove TARGET binding and use CC-FOR-TARGET instead. * gnu/packages/linux.scm (powerstat, crda, cachefilesd)[arguments]: Likewise. * gnu/packages/mail.scm (alpine)[arguments]: Likewise. * gnu/packages/music.scm (lsp-plugins)[arguments]: Likewise. * gnu/packages/radio.scm (dump1090)[arguments]: Likewise. * gnu/packages/suckless.scm (blind, dmenu, spoon, slock, st, surf, sent, wificurse, sbm, prout, noice, human, fortify-headers, colors, libutf, scron)[arguments]: Likewise. Marius Bakke 2020-05-29gnu: fldigi: Update to 4.1.13....* gnu/packages/radio.scm (fldigi): Update to 4.1.13. Tobias Geerinckx-Rice 2020-05-15gnu: chirp: Update to 20200430....* gnu/packages/radio.scm (chirp): Update to 20200430. Guillaume Le Vaillant 2020-05-14gnu: dump1090: Don't hard-code CC=gcc....* gnu/packages/radio.scm (dump1090)[arguments]: Add 'make-flags' field to set 'CC' to the right compiler, remove 'configure' phase. Guillaume Le Vaillant 2020-05-14gnu: js8call: Fix undefined symbol error when starting the program....* gnu/packages/radio.scm (js8call)[arguments]: Add 'work-around-runtime-bug' phase. Guillaume Le Vaillant 2020-05-14gnu: wsjtx: Fix undefined symbol error when starting the program....* gnu/packages/radio.scm (wsjtx)[arguments]: Add 'work-around-runtime-bug' phase. Guillaume Le Vaillant 2020-05-14gnu: hackrf: Simplify installation instructions....* gnu/packages/radio.scm (hackrf)[description]: Replace 'modify-services' snippet with 'udev-rules-service'. Brice Waegeneire 2020-05-14gnu: rtl-sdr: Simplify installation instructions....* gnu/packages/radio.scm (rtl-sdr)[description]: Replace 'modify-services' snippet with 'udev-rules-service'. Brice Waegeneire 2020-05-11gnu: Add rtl-443....* gnu/packages/radio.scm (rtl-433): New variable. Guillaume Le Vaillant 2020-05-10gnu: Add dump1090....* gnu/packages/radio.scm (dump1090): New variable. Guillaume Le Vaillant 2020-05-09gnu: rtl-sdr: Improve description....* gnu/packages/radio.scm (rtl-sdr)[description]: Add instructions for blacklisting the default rtl28xxu DVB Linux driver. Guillaume Le Vaillant 2020-05-08gnu: rtl-sdr: Fix location of udev rules file....* gnu/packages/radio.scm (rtl-sdr)[arguments]: Modify 'fix-paths' phase to put the udev rules file in 'lib/' instead of 'etc/'. Guillaume Le Vaillant 2020-05-07gnu: rtl-sdr: Install udev rules....* gnu/packages/radio.scm (rtl-sdr)[arguments]: Add '-DINSTALL_UDEV_RULES=ON' to configure-flags and add a 'fix-paths' phase to put the udev rules in the right place. [description]: Indicate how to add the udev rules to the system configuration. Guillaume Le Vaillant 2020-05-06gnu: Add js8call....* gnu/packages/radio.scm (js8call): New variable. Guillaume Le Vaillant 2020-04-30gnu: gnuradio: Fix runtime python environment for plugins....* gnu/packages/radio.scm (gnuradio)[native-search-paths]: Add PYTHONPATH. [native-inputs]: Move python ... [inputs]: ... here. Guillaume Le Vaillant 2020-04-29gnu: gnuradio: Fix search paths for third-party blocks....* gnu/packages/radio.scm (gnuradio)[native-search-paths]: Add definition of the GRC_BLOCKS_PATH variable. Guillaume Le Vaillant 2020-04-29gnu: Add xnec2c....* gnu/packages/radio.scm (xnec2c): New variable. Guillaume Le Vaillant 2020-04-28gnu: gnuradio-osmosdr: Add hackrf support....* gnu/packages/radio.scm (gnuradio-osmosdr)[inputs]: Add hackrf. Guillaume Le Vaillant 2020-04-28gnu: Add hackrf....* gnu/packages/radio.scm (hackrf): New variable. Co-authored-by: Guillaume Le Vaillant <glv@posteo.net> Christopher Howard 2020-04-27gnu: fldigi: Update to 4.1.12....* gnu/packages/radio.scm (fldigi): Update to 4.1.12. Guillaume Le Vaillant 2020-04-24gnu: Add wsjtx....* gnu/packages/radio.scm (wsjtx-hamlib): New variable. (wsjtx): New variable. Guillaume Le Vaillant 2020-04-24gnu: fldigi: Add hamlib support....* gnu/packages/radio.scm (fldigi)[inputs]: Add hamlib and libusb. Guillaume Le Vaillant 2020-04-24gnu: Add hamlib....* gnu/packages/radio.scm (hamlib): New package. Guillaume Le Vaillant 2020-04-16gnu: Add flwrap....* gnu/packages/radio.scm (flwrap): New variable. Guillaume Le Vaillant 2020-04-16gnu: Add flamp....* gnu/packages/radio.scm (flamp): New variable. Guillaume Le Vaillant 2020-04-15gnu: Add flrig....* gnu/packages/radio.scm (flrig): New variable. Guillaume Le Vaillant 2020-04-15gnu: Add fldigi....* gnu/packages/radio.scm (fldigi): New variable. Guillaume Le Vaillant 2020-04-15gnu: gqrx: Add volk to inputs....* gnu/packages/radio.scm (gqrx)[inputs]: Add volk. Guillaume Le Vaillant 2020-04-15gnu: gnuradio-iqbalance: Add volk to inputs....* gnu/packages/radio.scm (gnuradio-iqbalance)[inputs]: Add volk. Guillaume Le Vaillant 2020-04-15gnu: gnuradio-osmosdr: Add volk to inputs....* gnu/packages/radio.scm (gnuradio-osmosdr)[inputs]: Add volk. Guillaume Le Vaillant 2020-04-15gnu: gnuradio: Use shared volk instead of bundled one....* gnu/packages/radio.scm (gnuradio)[source]: Add snippet to delete bundled volk. [inputs]: Add volk. [arguments]: Add "-DENABLE_INTERNAL_VOLK=OFF" to configure-flags. Guillaume Le Vaillant 2020-04-11gnu: Merge ham-radio and sdr modules into radio module....* gnu/packages/ham-radio.scm: Rename to 'radio.scm'. * gnu/packages/sdr.scm: Remove file. (liquid-dsp): Move to ... * gnu/packages/radio.scm (liquid-dsp): ... here. * gnu/local.mk (GNU_SYSTEM_MODULES): Remove 'ham-radio.scm' and 'sdr.scm'. Add 'radio.scm'. Guillaume Le Vaillant