Vorige: , Nach oben: Dienste   [Inhalt][Index]


11.10.37 Verschiedene Dienste

Fingerabdrucklese-Dienst

Das Modul (gnu services authentication) stellt einen DBus-Dienst zur Verfügung, mit dem Fingerabdrücke mit Hilfe eines Fingerabdrucksensors gelesen und identifiziert werden können.

Variable: fprintd-service-type

Der Diensttyp für fprintd, mit dem Fingerabdrücke gelesen werden können.

Systemsteuerungsdienst

Das Modul (gnu services sysctl) stellt einen Dienst zur Verfügung, um Kernelparameter zur Boot-Zeit einzustellen.

Variable: sysctl-service-type

Der Diensttyp für sysctl, das Kernel-Parameter unter /proc/sys/ anpasst. Um IPv4-Weiterleitung („Forwarding“) zu aktivieren, kann er auf diese Weise instanziiert werden:

(service sysctl-service-type
         (sysctl-configuration
           (settings '(("net.ipv4.ip_forward" . "1")))))

Weil sysctl-service-type in den Listen vorgegebener Dienste vorkommt, sowohl in %base-services als auch in %desktop-services, können Sie modify-services benutzen, um seine Konfiguration zu ändern und die Kernel-Parameter einzutragen, die Sie möchten (siehe modify-services).

(modify-services %base-services
  (sysctl-service-type config =>
                       (sysctl-configuration
                         (settings (append '(("net.ipv4.ip_forward" . "1"))
                                           %default-sysctl-settings)))))
Datentyp: sysctl-configuration

Der Datentyp, der die Konfiguration von sysctl repräsentiert.

sysctl (Vorgabe: (file-append procps "/sbin/sysctl")

Die ausführbare Datei für sysctl, die benutzt werden soll.

settings (Vorgabe: %default-sysctl-settings)

Eine assoziative Liste, die Kernel-Parameter und ihre Werte festlegt.

Variable: %default-sysctl-settings

Eine assoziative Liste, die die vorgegebenen sysctl-Parameter auf Guix System enthält.

PC/SC-Smart-Card-Daemon-Dienst

Das Modul (gnu services security-token) stellt den folgenden Dienst zur Verfügung, um pcscd auszuführen, den PC/SC-Smart-Card-Daemon. pcscd ist das Daemonprogramm für die Rahmensysteme pcsc-lite und MuscleCard. Es handelt sich um einen Ressourcenverwaltungsdienst, der die Kommunikation mit Smart-Card-Lesegeräten, Smart Cards und kryptographischen Tokens steuert, die mit dem System verbunden sind.

Variable: pcscd-service-type

Diensttyp für den pcscd-Dienst. Als Wert muss ein pcscd-configuration-Objekt angegeben werden. Um pcscd mit seiner Vorgabekonfiguration auszuführen, instanziieren Sie ihn als:

Datentyp: pcscd-configuration

Repräsentiert die Konfiguration von pcscd.

pcsc-lite (Vorgabe: pcsc-lite)

Das „pcsc-lite“-Paket, das pcscd zur Verfügung stellt.

usb-drivers (Vorgabe: (list ccid))

Die Liste der Pakete, die USB-Treiber für pcscd zur Verfügung stellen. Es wird erwartet, dass sich Treiber unter pcsc/drivers innerhalb des Store-Verzeichnisses des Pakets befinden.

LIRC-Dienst

Das Modul (gnu services lirc) stellt den folgenden Dienst zur Verfügung.

Variable: lirc-service-type

Diensttyp für einen Dienst, der LIRC ausführt, einen Dienst zum Dekodieren von Infrarot-Signalen aus Fernbedienungen.

Der Wert dieses Dienstes ist ein <lirc-configuration>-Objekt.

Datentyp: lirc-configuration

Datentyp, der die Konfiguration von lircd repräsentiert.

lirc (Vorgabe: lirc) (Typ: dateiartig)

Paketobjekt von lirc.

device (Vorgabe: #f) (Typ: Zeichenkette)
driver (Vorgabe: #f) (Typ: Zeichenkette)
config-file (Vorgabe: #f) (Typ: Zeichenkette-oder-dateiartig)

BESCHREIBUNG FEHLT NOCH. Siehe das lircd-Handbuch für Details.

extra-options (Vorgabe: '()) (Typ: Liste-von-Zeichenketten)

Zusätzliche Befehlszeilenoptionen, die an lircd übergeben werden.

SPICE-Dienst

Das Modul (gnu services spice) stellt den folgenden Dienst bereit.

Variable: spice-vdagent-service-type

Diensttyp für einen Dienst, der VDAGENT ausführt, einen Daemon, um die Zwischenablage mit einer virtuellen Maschine zu teilen und die Auflösung des Anzeigegeräts des Gastsystems umzustellen, wenn sich die Größe des grafischen Konsolenfensters ändert.

Datentyp: spice-vdagent-configuration

Datentyp, der die Konfiguration des spice-vdagent-service-type repräsentiert.

spice-vdagent (Vorgabe: spice-vdagent) (Typ: dateiartig)

Paketobjekt von VDAGENT.

inputattach-Dienst

Der inputattach-Dienst macht es Ihnen möglich, Eingabegeräte wie Wacom-Tabletts, Tastbildschirme („Touchscreens“) oder Joysticks mit dem Xorg-Anzeigeserver zu benutzen.

Variable: inputattach-service-type

Der Diensttyp für den Dienst, der inputattach auf einem Gerät ausführt und Ereignisse davon weiterleitet.

Datentyp: inputattach-configuration
device-type (Vorgabe: "wacom")

Der Typ des Geräts, mit dem eine Verbindung hergestellt werden soll. Führen Sie inputattach --help aus dem inputattach-Paket aus, um eine Liste unterstützter Gerätetypen zu sehen.

device (Vorgabe: "/dev/ttyS0")

Die Gerätedatei, um sich mit dem Gerät zu verbinden.

baud-rate (Vorgabe: #f)

Welche Baudrate für die serielle Verbindung benutzt werden soll. Es sollte eine Zahl oder #f angegeben werden.

log-file (Vorgabe: #f)

Wenn es wahr ist, muss es der Name einer Datei sein, in die Protokollnachrichten geschrieben werden sollen.

Wörterbuchdienst

Das Modul (gnu services dict) stellt den folgenden Dienst zur Verfügung:

Variable: dicod-service-type

Dies ist der Diensttyp für einen Dienst, der den dicod-Daemon ausführt. Dabei handelt es sich um eine Implementierung eines DICT-Servers (siehe das Dicod in Handbuch von GNU Dico).

Sie können in Ihre ~/.dico-Datei open localhost eintragen, damit localhost zum voreingestellten Server des dico-Clients wird (siehe das Initialization File in Handbuch von GNU Dico).

Anmerkung: Dieser Dienst ist auch mit Guix Home erhältlich, wo er einfach mit Ihren Benutzerrechten ausgeführt wird (siehe home-dicod-service-type).

Datentyp: dicod-configuration

Der Datentyp, der die Konfiguration von dicod repräsentiert.

dico (Vorgabe: dico)

Paketobjekt des GNU-Dico-Wörterbuchservers.

interfaces (Vorgabe: ’("localhost"))

Hierfür muss die Liste der IP-Adressen, Ports und möglicherweise auch Socket-Dateinamen angegeben werden, auf die gelauscht werden soll (siehe listen directive in Handbuch von GNU Dico).

handlers (Vorgabe: ’())

Liste der <dicod-handler>-Objekte, die Handler (Modulinstanzen) bezeichnen.

databases (Vorgabe: (list %dicod-database:gcide))

Liste der <dicod-database>-Objekte, die anzubietende Wörterbücher bezeichnen.

Datentyp: dicod-handler

Der Datentyp, der einen Wörterbuch-Handler (eine Modulinstanz) repräsentiert.

name

Der Name des Handlers (der Modulinstanz).

module (Vorgabe: #f)

Der Name des dicod-Moduls (der Instanz) des Handlers. Wenn er #f ist, heißt das, das Modul hat denselben Namen wie der Handler (siehe Modules in Handbuch von GNU Dico).

options

Liste der Zeichenketten oder G-Ausdrücke, die die Argumente für den Modul-Handler repräsentieren.

Datentyp: dicod-database

Datentyp, der eine Wörterbuchdatenbank repräsentiert.

name

Der Name der Datenbank, der in DICT-Befehlen benutzt wird.

handler

Der Name des dicod-Handlers (der Modulinstanz), die von dieser Datenbank benutzt wird (siehe Handlers in Handbuch von GNU Dico).

complex? (Vorgabe: #f)

Ob die Datenbankkonfiguration komplex ist. In diesem Fall muss für die komplexe Konfiguration auch ein entsprechendes <dicod-handler>-Objekt existieren, ansonsten nicht.

options

Liste der Zeichenketten oder G-Ausdrücke, die die Argumente für die Datenbank repräsentiert (siehe Databases in Handbuch von GNU Dico).

Variable: %dicod-database:gcide

Ein <dicod-database>-Objekt, um das „GNU Collaborative International Dictionary of English“ anzubieten. Dazu wird das gcide-Paket benutzt.

Im Folgenden sehen Sie eine Beispielkonfiguration für einen dicod-service-type.

(service dicod-service-type
         (dicod-configuration
          (handlers (list
                     (dicod-handler
                      (name "wordnet")
                      (module "wordnet")
                      (options
                       (list #~(string-append "wnhome=" #$wordnet))))))
          (databases (list
                      (dicod-database
                       (name "wordnet")
                       (complex? #t)
                       (handler "wordnet"))
                      %dicod-database:gcide))))

Docker-Dienst

Das Modul (gnu services docker) stellt die folgenden Dienste zur Verfügung.

Variable: docker-service-type

Dies ist der Diensttyp des Dienstes, um Docker auszuführen, einen Daemon, der Anwendungsbündel in „Containern“, d.h. isolierten Umgebungen, ausführen kann.

Datentyp: docker-configuration

Dies ist der Datentyp, der die Konfiguration von Docker und Containerd repräsentiert.

docker (Vorgabe: docker)

Das Docker-Daemon-Paket, was benutzt werden soll.

docker-cli (Vorgabe: docker-cli)

Das Docker-Client-Paket, was benutzt werden soll.

containerd (Vorgabe: containerd)

Das Containerd-Paket, was benutzt werden soll.

proxy (Vorgabe: docker-libnetwork-cmd-proxy)

Das Paket des mit Benutzerrechten (im „User-Land“) ausgeführten Docker-Netzwerkproxys, das verwendet werden soll.

enable-proxy? (Vorgabe: #t)

Den mit Benutzerrechten (im „User-Land“) ausgeführten Docker-Netzwerkproxy an- oder abschalten.

debug? (Vorgabe: #f)

Ausgaben zur Fehlersuche an- oder abschalten.

enable-iptables? (Vorgabe: #t)

Das Hinzufügen von iptables-Regeln durch Docker an- oder abschalten.

environment-variables (Vorgabe: '())

Liste Umgebungsvariabler, mit denen dockerd gestartet wird.

Hier muss eine Liste von Zeichenketten angegeben werden, die jeweils der Form ‘Schlüssel=Wert’ genügen wie in diesem Beispiel:

(list "LANGUAGE=eo:ca:eu"
      "TMPDIR=/tmp/dockerd")
config-file (Typ: Vielleicht-dateiartig)

Eine JSON-Konfigurationsdatei, die dockerd mitgegeben wird.

Variable: singularity-service-type

Dies ist der Diensttyp für den Dienst, mit dem Sie Singularity ausführen können, ein Docker-ähnliches Werkzeug, um Anwendungsbündel (auch bekannt als „Container“) auszuführen. Der Wert für diesen Dienst ist das Singularity-Paket, das benutzt werden soll.

Der Dienst installiert keinen Daemon, sondern er installiert Hilfsprogramme als setuid-root (siehe Setuid-Programme), damit auch „unprivilegierte“ Nutzer ohne besondere Berechtigungen singularity run und ähnliche Befehle ausführen können.

OCI-gestützte Dienste

Um Ihre Docker-Container im Einklang mit Guix’ Schnittstellen für Ihre anderen Shepherd-Dienste zu verwalten, eignet sich oci-container-service-type am besten: Sie übergeben ein Container-Image nach den Vorschriften der Open Container Initiative (OCI) und es wird als ein Shepherd-Dienst laufen. Ein Anwendungsfall dafür ist, damit Dienste aus Docker- bzw. OCI-Abbildern zu betreiben, für die es noch kein Guix-Paket gibt.

Variable: oci-container-service-type

Es handelt sich um einen dünnen Wrapper um Dockers CLI herum, mit dem OCI-Image-gestützte Prozesse als Shepherd-Dienste laufen können.

(service oci-container-service-type
         (list
          (oci-container-configuration
           (network "host")
           (image
            (oci-image
             (repository "guile")
             (tag "3")
             (value (specifications->manifest '("guile")))
             (pack-options '(#:symlinks (("/bin/guile" -> "bin/guile"))
                             #:max-layers 2))))
           (entrypoint "/bin/guile")
           (command
            '("-c" "(display \"hello!\n\")")))
          (oci-container-configuration
           (image "prom/prometheus")
           (ports
             '(("9000" . "9000")
               ("9090" . "9090"))))
          (oci-container-configuration
           (image "grafana/grafana:10.0.1")
           (network "host")
           (volumes
             '("/var/lib/grafana:/var/lib/grafana")))))

In this example three different Shepherd services are going be added to the system. Each oci-container-configuration record translates to a docker run invocation and its fields directly map to options. You can refer to the upstream, documentation for the semantics of each value. If the images are not found they will be pulled. The services with (network "host") are going to be attached to the host network and are supposed to behave like native processes with regard to networking.

Datentyp: oci-container-configuration

Verfügbare oci-container-configuration-Felder sind:

user (Vorgabe: "oci-container") (Typ: Zeichenkette)

Mit den Berechtigungen welches Benutzerkontos die Docker-Befehle ausgeführt werden.

group (Vorgabe: "docker") (Typ: Zeichenkette)

Mit den Berechtigungen welcher Benutzergruppe die Docker-Befehle ausgeführt werden.

command (default: '()) (type: list-of-strings)

Den voreingestellten Befehl (CMD) im Image ändern.

entrypoint (Vorgabe: "") (Typ: Zeichenkette)

Den voreingestellten Einsprungpunkt (ENTRYPOINT) im Image ändern.

host-environment (default: '()) (type: list)

Set environment variables in the host environment where docker run is invoked. This is especially useful to pass secrets from the host to the container without having them on the docker run’s command line: by setting the MYSQL_PASSWORD on the host and by passing --env MYSQL_PASSWORD through the extra-arguments field, it is possible to securely set values in the container environment. This field’s value can be a list of pairs or strings, even mixed:

(list '("LANGUAGE\" . "eo:ca:eu")
      "JAVA_HOME=/opt/java")

Pair members can be strings, gexps or file-like objects. Strings are passed directly to make-forkexec-constructor.

environment (default: '()) (type: list)

Legen Sie Umgebungsvariable fest. Geben Sie dazu eine Liste von Paaren oder von Zeichenketten an, gerne auch gemischt:

(list '("LANGUAGE" . "eo:ca:eu")
      "JAVA_HOME=/opt/java")

Pair members can be strings, gexps or file-like objects. Strings are passed directly to the Docker CLI. You can refer to the upstream documentation for semantics.

image (type: string-or-oci-image)

The image used to build the container. It can be a string or an oci-image record. Strings are resolved by the Docker Engine, and follow the usual format myregistry.local:5000/testing/test-image:tag.

provision (Vorgabe: "") (Typ: Zeichenkette)

Der Name des Shepherd-Dienstes, der bereitgestellt wird.

requirement (default: '()) (type: list-of-symbols)

Set additional Shepherd services dependencies to the provisioned Shepherd service.

log-file (Typ: Vielleicht-Zeichenkette)

When log-file is set, it names the file to which the service’s standard output and standard error are redirected. log-file is created if it does not exist, otherwise it is appended to.

auto-start? (default: #t) (type: boolean)

Whether this service should be started automatically by the Shepherd. If it is #f the service has to be started manually with herd start.

respawn? (default: #f) (type: boolean)

Whether to have Shepherd restart the service when it stops, for instance when the underlying process dies.

shepherd-actions (default: '()) (type: list-of-symbols)

This is a list of shepherd-action records defining actions supported by the service.

network (Vorgabe: "") (Typ: Zeichenkette)

Unter welchem Docker-Netzwerk der gestartete Container zu finden ist.

ports (default: '()) (type: list)

Welcher Port oder Bereich von Ports im gestarteten Container zugänglich sein sollen. Geben Sie dazu eine Liste von Paaren oder von Zeichenketten an, gerne auch gemischt:

(list '("8080" . "80")
      "10443:443")

Pair members can be strings, gexps or file-like objects. Strings are passed directly to the Docker CLI. You can refer to the upstream documentation for semantics.

volumes (default: '()) (type: list)

Welche Datenträgerzuordnungen („volume mappings“) im gestarteten Container sein sollen. Geben Sie dazu eine Liste von Paaren oder von Zeichenketten an, gerne auch gemischt:

(list '("/root/data/grafana" . "/var/lib/grafana")
      "/gnu/store:/gnu/store")

Pair members can be strings, gexps or file-like objects. Strings are passed directly to the Docker CLI. You can refer to the upstream documentation for semantics.

container-user (Vorgabe: "") (Typ: Zeichenkette)

Was der aktuelle Benutzer im gestarteten Container sein soll. Informationen zur Bedeutung können Sie in der Docker-Dokumentation finden.

workdir (Vorgabe: "") (Typ: Zeichenkette)

Was das aktuelle Arbeitsverzeichnis im gestarteten Shepherd-Dienst sein soll. Informationen zur Bedeutung können Sie in der Docker-Dokumentation finden.

extra-arguments (default: '()) (type: list)

A list of strings, gexps or file-like objects that will be directly passed to the docker run invokation.

Data Type: oci-image

Available oci-image fields are:

repository (type: string)

A string like myregistry.local:5000/testing/test-image that names the OCI image.

tag (default: "latest") (type: string)

A string representing the OCI image tag. Defaults to latest.

value (type: oci-lowerable-image)

A manifest or operating-system record that will be lowered into an OCI compatible tarball. Otherwise this field’s value can be a gexp or a file-like object that evaluates to an OCI compatible tarball.

pack-options (default: '()) (type: list)

An optional set of keyword arguments that will be passed to the docker-image procedure from guix scripts pack. They can be used to replicate guix pack behavior:

(oci-image
  (repository "guile")
  (tag "3")
  (value
    (specifications->manifest '("guile")))
  (pack-options '(#:symlinks (("/bin/guile" -> "bin/guile"))
                  #:max-layers 2)))

If the value field is an operating-system record, this field’s value will be ignored.

system (default: "") (type: string)

Attempt to build for a given system, e.g. "i686-linux"

target (default: "") (type: string)

Attempt to cross-build for a given triple, e.g. "aarch64-linux-gnu"

grafts? (default: #f) (type: boolean)

Whether to allow grafting or not in the pack build.

Auditd-Dienst

Das Modul (gnu services auditd) stellt den folgenden Dienst zur Verfügung.

Variable: auditd-service-type

Dies ist der Diensttyp des Dienstes, mit dem auditd ausgeführt wird, ein Daemon, der sicherheitsrelevante Informationen auf Ihrem System sammelt.

Beispiele für Dinge, über die Informationen gesammelt werden sollen:

  1. Dateizugriffe
  2. Betriebssystemaufrufe („System Calls“)
  3. Aufgerufene Befehle
  4. Fehlgeschlagene Anmeldeversuche
  5. Filterung durch die Firewall
  6. Netzwerkzugriff

auditctl aus dem audit-Paket kann benutzt werden, um zu überwachende Ereignisse (bis zum nächsten Neustart) hinzuzufügen oder zu entfernen. Um über Ereignisse dauerhaft Informationen sammeln zu lassen, schreiben Sie die Befehlszeilenargumente für auditctl in eine Datei namens audit.rules im Verzeichnis für Konfigurationen (siehe unten). aureport aus dem audit-Paket kann benutzt werden, um einen Bericht über alle aufgezeichneten Ereignisse anzuzeigen. Nach Vorgabe speichert der Audit-Daemon Protokolle in die Datei /var/log/audit.log.

Datentyp: auditd-configuration

Dies ist der Datentyp, der die Konfiguration von auditd repräsentiert.

audit (Vorgabe: audit)

Das zu verwendende audit-Paket.

configuration-directory (Vorgabe: %default-auditd-configuration-directory)

Das Verzeichnis mit der Konfigurationsdatei für das audit-Paket. Sie muss den Namen auditd.conf tragen und optional kann sie ein paar Audit-Regeln enthalten, die beim Start instanziiert werden sollen.

R-Shiny-Dienst

Das Modul (gnu services science) stellt den folgenden Dienst bereit.

Variable: rshiny-service-type

Dies ist der Diensttyp eines Dienstes, um eine mit r-shiny erzeugte Web-Anwendung („Webapp“) auszuführen. Dieser Dienst legt die Umgebungsvariable R_LIBS_USER fest und führt das eingestellte Skript aus, um runApp aufzurufen.

Datentyp: rshiny-configuration

Dies ist der Datentyp, der die Konfiguration von rshiny repräsentiert.

package (Vorgabe: r-shiny)

Das zu benutzende Paket.

binary (Vorgabe: "rshiny")

Der Name der Binärdatei oder des Shell-Skripts, das sich in Paket/bin/ befindet und beim Starten des Dienstes ausgeführt werden soll.

Die übliche Art, diese Datei erzeugen zu lassen, ist folgende:


(let* ((out       (assoc-ref %outputs "out"))
       (targetdir (string-append out "/share/" ,name))
       (app       (string-append out "/bin/" ,name))
       (Rbin      (search-input-file %build-inputs "/bin/Rscript")))
  ;; …
  (mkdir-p (string-append out "/bin"))
  (call-with-output-file app
    (lambda (port)
      (format port
"#!~a
library(shiny)
setwd(\"~a\")
runApp(launch.browser=0, port=4202)~%\n"
      Rbin targetdir))))

Nix-Dienst

Das Modul (gnu services nix) stellt den folgenden Dienst zur Verfügung:

Variable: nix-service-type

Dies ist der Diensttyp für den Dienst, der den Erstellungs-Daemon der Nix-Paketverwaltung ausführt. Hier ist ein Beispiel, wie man ihn benutzt:

(use-modules (gnu))
(use-service-modules nix)
(use-package-modules package-management)

(operating-system
  ;; …
  (packages (append (list nix)
                    %base-packages))

  (services (append (list (service nix-service-type))
                    %base-services)))

Nach guix system reconfigure können Sie Nix für Ihr Benutzerkonto konfigurieren:

  • Fügen Sie einen Nix-Kanal ein und aktualisieren Sie ihn. Siehe Nix channels für eine Übersicht, welche Kanäle es gibt. Wenn Sie den Nix-Kanal „unstable“ nutzen möchten, führen Sie dazu das aus:
    $ nix-channel --add https://nixos.org/channels/nixpkgs-unstable
    $ nix-channel --update
    
  • Erstellen Sie das Verzeichnis mit Ihrem Nix-Profil:
    $ sudo mkdir -p /nix/var/nix/profiles/per-user/$USER
    $ sudo chown $USER:root /nix/var/nix/profiles/per-user/$USER
    
  • Erzeugen Sie eine symbolische Verknüpfung zu Ihrem Profil und aktivieren Sie das Nix-Profil:
    $ ln -s "/nix/var/nix/profiles/per-user/$USER/profile" ~/.nix-profile
    $ source /run/current-system/profile/etc/profile.d/nix.sh
    
Datentyp: nix-configuration

Dieser Datentyp repräsentiert die Konfiguration des Nix-Daemons.

nix (Vorgabe: nix)

Das zu verwendende Nix-Paket.

sandbox (Vorgabe: #t)

Gibt an, ob Erstellungen nach Voreinstellung in einer isolierten Umgebung („Sandbox“) durchgeführt werden sollen.

build-directory (Vorgabe: "/tmp")

In welchem Verzeichnis die Verzeichnisbäume zu Erstellungen untergebracht werden. Dies zu ändern, ist dann sinnvoll, wenn zum Beispiel der vorgegebene Ort nicht genügend Speicherplatz für die Verzeichnisbäume großer Pakete bereitstellt.

Dies entspricht einer Änderung der Umgebungsvariablen TMPDIR des guix-daemon. Siehe TMPDIR für weitere Informationen.

build-sandbox-items (Vorgabe: '())

Dies ist eine Liste von Zeichenketten oder Objekten, die an das build-sandbox-items-Feld der Konfigurationsdatei angehängt werden.

extra-config (Vorgabe: '())

Dies ist eine Liste von Zeichenketten oder Objekten, die an die Konfigurationsdatei angehängt werden. Mit ihnen wird zusätzlicher Text wortwörtlich zur Konfigurationsdatei hinzugefügt.

extra-options (Vorgabe: '())

Zusätzliche Befehlszeilenoptionen für nix-service-type.

Fail2Ban-Dienst

Durch fail2ban werden Protokolldateien durchgesehen (wie /var/log/apache/error_log) und diejenigen IP-Adressen ausgesperrt, die bösartig erscheinen – also mehrfach ein falsches Passwort probieren, nach Sicherheitslücken suchen und Ähnliches.

Der Diensttyp fail2ban-service-type wird durch das Modul (gnu services security) verfügbar gemacht.

Mit dem Diensttyp wird der fail2ban-Daemon ausgeführt. Sie können ihn auf unterschiedliche Weise konfigurieren, nämlich:

Grundlegende Konfiguration

Die Grundeinstellungen für den Fail2Ban-Dienst können Sie über seine fail2ban-Konfiguration bestimmen. Ihre Dokumentation finden Sie unten.

Vom Nutzer festgelegte Jail-Erweiterungen

Mit der Funktion fail2ban-jail-service können neue Fail2Ban-Jails hinzugefügt werden.

Erweiterungen für Shepherd-Dienste

Entwickler von Diensten können den Dienst mit dem Typ fail2ban-service-type über den üblichen Mechanismus zur Diensterweiterung erweitern.

Variable: fail2ban-service-type

Dies ist der Diensttyp für einen Dienst, der den fail2ban-Daemon ausführt. Hier folgt ein Beispiel für eine grundlegende, explizite Konfiguration.

(append
 (list
  (service fail2ban-service-type
           (fail2ban-configuration
            (extra-jails
             (list
              (fail2ban-jail-configuration
               (name "sshd")
               (enabled? #t))))))
  ;; Es besteht keine implizite Abhängigkeit von einem wirklichen
  ;; SSH-Dienst, also müssen Sie ihn zusätzlich hinschreiben.
  (service openssh-service-type))
 %base-services)
Prozedur: fail2ban-jail-service Diensttyp Jail

Den Diensttyp, ein <service-type>-Objekt, mit Jail ausstatten, einem Objekt vom Typ fail2ban-jail-configuration.

Zum Beispiel:

(append
 (list
  (service
   ;; Durch die Prozedur 'fail2ban-jail-service' kann jeglicher Diensttyp
   ;; mit einem fail2ban-Jail versehen werden. So müssen die Dienste
   ;; nicht explizit im fail2ban-service-type aufgeführt werden.
   (fail2ban-jail-service
    openssh-service-type
    (fail2ban-jail-configuration
     (name "sshd")
     (enabled? #t)))
   (openssh-configuration ))))

Nun folgt die Referenz der Verbundstypen zur Konfiguration des jail-service-type.

Datentyp: fail2ban-configuration

Verfügbare fail2ban-configuration-Felder sind:

fail2ban (Vorgabe: fail2ban) (Typ: „package“)

Welches fail2ban-Paket benutzt werden soll. Es stellt sowohl die Binärdateien als auch die Voreinstellungen für die Konfiguration bereit, die mit <fail2ban-jail-configuration>-Objekten erweitert werden soll.

run-directory (Vorgabe: "/var/run/fail2ban") (Typ: Zeichenkette)

Das Zustandsverzeichnis für den fail2ban-Daemon.

jails (Vorgabe: '()) (Typ: Liste-von-„fail2ban-jail-configuration“)

<fail2ban-jail-configuration>-Instanzen, die sich aus Diensterweiterungen ergeben.

extra-jails (Vorgabe: '()) (Typ: Liste-von-„fail2ban-jail-configuration“)

<fail2ban-jail-configuration>-Instanzen, die explizit angegeben werden.

extra-content (Vorgabe: '()) (Typ: Konfigurationstexte)

Zusätzlicher „roher Inhalt“, der ans Ende der Datei jail.local angefügt wird. Geben Sie ihn als Liste von dateiartigen Objekten an.

Datentyp: fail2ban-ignore-cache-configuration

Verfügbare fail2ban-ignore-cache-configuration-Felder sind:

key (Typ: Zeichenkette)

Schlüssel, für den zwischengespeichert wird.

max-count (Typ: Ganze-Zahl)

Für welche Größe zwischengespeichert wird.

max-time (Typ: Zeichenkette)

Wie lange die Zwischenspeicherung anhält.

Datentyp: fail2ban-jail-action-configuration

Verfügbare fail2ban-jail-action-configuration-Felder sind:

name (Typ: Zeichenkette)

Name der Aktion.

arguments (Vorgabe: '()) (Typ: Liste-von-Argumenten)

Argumente der Aktion.

Datentyp: fail2ban-jail-configuration

Verfügbare fail2ban-jail-configuration-Felder sind:

name (Typ: Zeichenkette)

Verpflichtend der Name dieser Jail-Konfiguration.

enabled? (Vorgabe: #t) (Typ: Boolescher-Ausdruck)

Gibt an, ob dieses Jail aktiviert ist.

backend (Typ: Vielleicht-Symbol)

Mit welchem Hintergrundprogramm Änderungen am log-path erkannt werden sollen. Voreingestellt ist ’auto. Um die Voreinstellungen zu der Jail-Konfiguration einzusehen, siehe die Datei /etc/fail2ban/jail.conf des fail2ban-Pakets.

max-retry (Typ: Vielleicht-Ganze-Zahl)

Wie oft Fehler erkannt werden müssen, bevor ein Rechner gesperrt wird (etwa (max-retry 5)).

max-matches (Typ: Vielleicht-Ganze-Zahl)

Wie viele Treffer je Ticket höchstens gespeichert werden sollen (in Aktionen kann man dies mit <matches> verwenden).

find-time (Typ: Vielleicht-Zeichenkette)

In welchem Zeitfenster die Höchstzahl an Neuversuchen festgestellt werden muss, damit eine IP-Adresse gesperrt wird. Ein Rechner wird gesperrt, wenn er max-retry während der letzten find-time Sekunden erreicht hat (z.B. (find-time "10m")). Es kann in Sekunden angegeben werden oder im Zeitkurzformat von Fail2Ban (das „time abbreviation format“, das in man 5 jail.conf beschrieben ist).

ban-time (Typ: Vielleicht-Zeichenkette)

Die Dauer einer Sperre, in Sekunden oder besagtem Zeitkurzformat. (Etwa (ban-time "10m").)

ban-time-increment? (Typ: Vielleicht-Boolescher-Ausdruck)

Ob vorherige Sperren einen Einfluss auf berechnete Steigerungen der Sperrzeit einer bestimmten IP-Adresse haben sollen.

ban-time-factor (Typ: Vielleicht-Zeichenkette)

Der auf die Sperrzeit angerechnete Koeffizient für eine exponentiell zunehmende Sperrzeit.

ban-time-formula (Typ: Vielleicht-Zeichenkette)

Mit dieser Formel wird der nächste Wert einer Sperrzeit berechnet.

ban-time-multipliers (Typ: Vielleicht-Zeichenkette)

Hiermit wird der nächste Wert einer Sperrzeit berechnet und die Formel ignoriert.

ban-time-max-time (Typ: Vielleicht-Zeichenkette)

Wie viele Sekunden jemand längstens gesperrt wird.

ban-time-rnd-time (Typ: Vielleicht-Zeichenkette)

Wie viele Sekunden höchstens zufällig auf die Sperrzeit angerechnet werden. So können ausgefuchste Botnetze nicht genau ausrechnen, wann eine IP-Adresse wieder entsperrt sein wird.

ban-time-overall-jails? (Typ: Vielleicht-Boolescher-Ausdruck)

Wenn dies wahr ist, wird festgelegt, dass nach einer IP-Adresse in der Datenbank aller Jails gesucht wird. Andernfalls wird nur das aktuelle Jail beachtet.

ignore-self? (Typ: Vielleicht-Boolescher-Ausdruck)

Niemals die eigene IP-Adresse der lokalen Maschine bannen.

ignore-ip (Vorgabe: '()) (Typ: Liste-von-Zeichenketten)

Eine Liste von IP-Adressen, CIDR-Masken oder DNS-Rechnernamen, die ignoriert werden. fail2ban wird keinen Rechner bannen, der zu einer Adresse auf dieser Liste gehört.

ignore-cache (Typ: Vielleicht-„fail2ban-ignore-cache-configuration“)

Machen Sie Angaben zum Zwischenspeicher, mit dem mehrfache Auffälligkeiten ignoriert werden können.

filter (Typ: Vielleicht-„fail2ban-jail-filter-configuration“)

Der Filter, der für das Jail gilt, als <fail2ban-jail-filter-configuration>-Objekt. Nach Voreinstellung entsprechen die Namen der Jails ihren Filternamen.

log-time-zone (Typ: Vielleicht-Zeichenkette)

Die Voreinstellung für die Zeitzone, wenn eine Zeile im Protokoll keine nennt.

log-encoding (Typ: Vielleicht-Symbol)

In welcher Kodierung die Protokolldateien abgelegt sind, um die sich das Jail kümmert. Mögliche Werte sind 'ascii, 'utf-8 und 'auto.

log-path (Vorgabe: '()) (Typ: Liste-von-Zeichenketten)

Die Dateinamen der Protokolldateien, die beobachtet werden.

action (Vorgabe: '()) (Typ: Liste-von-„fail2ban-jail-action“)

Eine Liste von <fail2ban-jail-action-configuration>.

extra-content (Vorgabe: '()) (Typ: Konfigurationstexte)

Zusätzlicher Inhalt für die Jail-Konfiguration. Geben Sie ihn als Liste von dateiartigen Objekten an.

Datentyp: fail2ban-jail-filter-configuration

Verfügbare fail2ban-jail-filter-configuration-Felder sind:

name (Typ: Zeichenkette)

Filter, der benutzt werden soll.

mode (Typ: Vielleicht-Zeichenkette)

In welchem Modus der Filter stehen soll.

Backup Services

The (gnu services backup) module offers services for backing up file system trees. For now, it provides the restic-backup-service-type.

With restic-backup-service-type, you can periodically back up directories and files with Restic, which supports end-to-end encryption and deduplication. Consider the following configuration:

(use-service-modules backup ) ;for 'restic-backup-service-type'
(use-package-modules sync )   ;for 'rclone'

(operating-system
  ;; …
  (packages (append (list rclone)    ;for use by restic
                    %base-packages))
  (services
    (list
      (service restic-backup-service-type
               (restic-backup-configuration
                 (jobs
                   (list (restic-backup-job
                           (name "remote-ftp")
                           (repository "rclone:remote-ftp:backup/restic")
                           (password-file "/root/.restic")
                           ;; Every day at 23.
                           (schedule "0 23 * * *")
                           (files '("/root/.restic"
                                    "/root/.config/rclone"
                                    "/etc/ssh/ssh_host_rsa_key"
                                    "/etc/ssh/ssh_host_rsa_key.pub"
                                    "/etc/guix/signing-key.pub"
                                    "/etc/guix/signing-key.sec"))))))))))

Each restic-backup-job translates to an mcron job which sets the RESTIC_PASSWORD environment variable by reading the first line of password-file and runs restic backup, creating backups using rclone of all the files listed in the files field.

The restic-backup-service-type installs as well restic-guix to the system profile, a restic utility wrapper that allows for easier interaction with the Guix configured backup jobs. For example the following could be used to instantaneusly trigger a backup for the above shown configuration, without waiting for the scheduled job:

restic-guix backup remote-ftp
Data Type: restic-backup-configuration

Available restic-backup-configuration fields are:

jobs (default: '()) (type: list-of-restic-backup-jobs)

The list of backup jobs for the current system.

Data Type: restic-backup-job

Available restic-backup-job fields are:

restic (default: restic) (type: package)

The restic package to be used for the current job.

user (default: "root") (type: string)

The user used for running the current job.

repository (type: string)

The restic repository target of this job.

name (Typ: Zeichenkette)

A string denoting a name for this job.

password-file (type: string)

Name of the password file, readable by the configured user, that will be used to set the RESTIC_PASSWORD environment variable for the current job.

schedule (type: gexp-or-string)

A string or a gexp that will be passed as time specification in the mcron job specification (siehe mcron job specifications in GNU mcron).

files (default: '()) (type: list-of-lowerables)

The list of files or directories to be backed up. It must be a list of values that can be lowered to strings.

verbose? (Vorgabe: #f) (Typ: Boolescher-Ausdruck)

Whether to enable verbose output for the current backup job.

extra-flags (default: '()) (type: list-of-lowerables)

A list of values that are lowered to strings. These will be passed as command-line arguments to the current job restic backup invokation.


Vorige: Hurd-Dienste, Nach oben: Dienste   [Inhalt][Index]