So überprüfen Sie, ob ein Systemdienst in Linux maskiert ist

LinuxLinuxBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab lernen Sie, wie Sie überprüfen können, ob ein Systemdienst in Linux mit systemd maskiert ist. Das Maskieren eines Dienstes verhindert, dass er startet, was ein Schlüsselkonzept für die Systemverwaltung und die Fehlerbehebung ist. Sie verwenden den Befehl systemctl is-masked, um den Maskierungsstatus bestimmter Dienste zu überprüfen, und den Befehl systemctl list-unit-files, um einen umfassenderen Überblick über die systemd-Unit-Dateien zu erhalten. Abschließend werden Sie die systemd-Konfigurationsverzeichnisse untersuchen, um zu verstehen, wo diese Einstellungen gespeichert sind.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux(("Linux")) -.-> linux/SystemInformationandMonitoringGroup(["System Information and Monitoring"]) linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") linux/BasicFileOperationsGroup -.-> linux/less("File Paging") linux/FileandDirectoryManagementGroup -.-> linux/cd("Directory Changing") linux/SystemInformationandMonitoringGroup -.-> linux/service("Service Managing") subgraph Lab Skills linux/ls -.-> lab-558770{{"So überprüfen Sie, ob ein Systemdienst in Linux maskiert ist"}} linux/less -.-> lab-558770{{"So überprüfen Sie, ob ein Systemdienst in Linux maskiert ist"}} linux/cd -.-> lab-558770{{"So überprüfen Sie, ob ein Systemdienst in Linux maskiert ist"}} linux/service -.-> lab-558770{{"So überprüfen Sie, ob ein Systemdienst in Linux maskiert ist"}} end

Überprüfen des Dienstmaskierungsstatus mit systemctl is-masked

In diesem Schritt beginnen wir mit der Erkundung von systemd, dem System- und Dienstmanager in modernen Linux-Distributionen wie Ubuntu. systemd ist für das Starten, Stoppen und Verwalten von Diensten (wie Webservern, Datenbanken usw.) und anderen Systemressourcen verantwortlich.

Ein wichtiges Konzept in systemd ist das "Maskieren" eines Dienstes. Das Maskieren eines Dienstes verhindert, dass er gestartet wird, auch nicht manuell oder durch andere Dienste. Dies ist eine Möglichkeit, einen Dienst vollständig zu deaktivieren.

Wir können überprüfen, ob ein Dienst maskiert ist, indem wir den Befehl systemctl is-masked verwenden. Lassen Sie uns den Status eines gängigen Dienstes, apache2, überprüfen. Apache ist ein beliebter Webserver.

Öffnen Sie Ihr Terminal, wenn es noch nicht geöffnet ist. Denken Sie daran, dass Sie das Symbol für das Xfce Terminal auf der linken Seite Ihres Desktops finden können.

Geben Sie den folgenden Befehl ein und drücken Sie die Eingabetaste:

systemctl is-masked apache2

Sie sollten eine Ausgabe ähnlich der folgenden sehen:

inactive

Diese Ausgabe zeigt an, dass der apache2-Dienst nicht maskiert ist. Wenn er maskiert wäre, würde die Ausgabe masked lauten.

Lassen Sie uns versuchen, einen Dienst zu überprüfen, der in dieser Umgebung normalerweise standardmäßig maskiert ist, wie systemd-udevd-kernel.socket. Dies ist ein niedrigschichtiger Systemdienst.

Geben Sie den folgenden Befehl ein und drücken Sie die Eingabetaste:

systemctl is-masked systemd-udevd-kernel.socket

Die Ausgabe sollte lauten:

masked

Dies bestätigt, dass der systemd-udevd-kernel.socket-Dienst tatsächlich maskiert ist.

Das Verständnis, ob ein Dienst maskiert ist, ist für die Fehlerbehebung und die Verwaltung Ihres Systems von entscheidender Bedeutung. Wenn ein Dienst nicht startet, ist die Überprüfung seines Maskierungsstatus oft einer der ersten Schritte.

Klicken Sie auf Weiter, um mit dem nächsten Schritt fortzufahren.

Auflisten von Unit-Dateien mit systemctl list-unit-files

Im vorherigen Schritt haben wir systemctl is-masked verwendet, um den Status einzelner Dienste zu überprüfen. Jetzt wollen wir einen umfassenderen Überblick über alle Unit-Dateien erhalten, die systemd kennt.

systemd verwaltet verschiedene Arten von "Units", die Konfigurationsdateien sind, welche Dienste, Mountpunkte, Geräte, Sockets und mehr definieren. Der am häufigsten verwendete Typ ist die .service-Unit, die definiert, wie ein Hintergrundprozess (ein Dienst) ausgeführt wird.

Der Befehl systemctl list-unit-files zeigt eine Liste aller installierten Unit-Dateien und ihren "enable"-Zustand an. Der enable-Zustand gibt an, ob eine Unit so konfiguriert ist, dass sie beim Booten automatisch startet.

Geben Sie den folgenden Befehl in Ihrem Terminal ein und drücken Sie die Eingabetaste:

systemctl list-unit-files

Dieser Befehl gibt eine lange Liste von Unit-Dateien aus. Die Ausgabe sieht in etwa so aus (nur ein kleiner Teil wird gezeigt):

UNIT FILE                                  STATE
proc-sys-fs-binfmt_misc.automount          static
dev-hugepages.mount                        static
dev-mqueue.mount                           static
proc-sys-fs-binfmt_misc.mount              static
sys-fs-fuse-connections.mount              static
sys-kernel-config.mount                    static
sys-kernel-debug.mount                     static
sys-kernel-tracing.mount                   static
...
apache2.service                            disabled
...

Die Ausgabe hat zwei Spalten:

  • UNIT FILE: Der Name der Unit-Datei (z.B. apache2.service).
  • STATE: Der enable-Zustand der Unit (z.B. static, enabled, disabled, masked).

Hier ist eine kurze Erklärung einiger gängiger Zustände:

  • enabled: Die Unit ist so konfiguriert, dass sie beim Booten automatisch startet.
  • disabled: Die Unit ist nicht so konfiguriert, dass sie beim Booten automatisch startet.
  • static: Die Unit kann nicht aktiviert oder deaktiviert werden; ihr Start wird von einer anderen Unit gesteuert.
  • masked: Die Unit ist vollständig deaktiviert und kann nicht gestartet werden.

Sie können durch die Ausgabe scrollen, indem Sie die Scrollleiste Ihres Terminals verwenden oder indem Sie die Ausgabe an einen Pager wie less weiterleiten. Beispielsweise:

systemctl list-unit-files | less

Innerhalb von less können Sie mit den Pfeiltasten scrollen, die Leertaste drücken, um eine Seite nach unten zu gehen, und q drücken, um zu beenden.

Dieser Befehl ist sehr nützlich, um zu sehen, welche Dienste auf Ihrem System installiert sind und wie sie für den Start konfiguriert sind.

Klicken Sie auf Weiter, um fortzufahren.

Untersuchung der systemd-Konfiguration in /etc/systemd

In den vorherigen Schritten haben wir den systemctl-Befehl verwendet, um mit systemd zu interagieren. Jetzt schauen wir uns an, wo systemd seine Konfigurationsdateien speichert.

Das primäre Verzeichnis für systemd-Konfigurationsdateien ist /etc/systemd. Dieses Verzeichnis enthält Unterverzeichnisse für verschiedene Arten von Unit-Dateien und Konfigurationseinstellungen.

Lassen Sie uns den Inhalt des /etc/systemd-Verzeichnisses mit dem ls-Befehl auflisten. Denken Sie daran, dass /etc ein Standardverzeichnis in Linux für Konfigurationsdateien ist.

Geben Sie den folgenden Befehl in Ihrem Terminal ein und drücken Sie die Eingabetaste:

ls /etc/systemd/

Sie werden eine Liste von Verzeichnissen und Dateien sehen, ähnlich dieser:

journald.conf  logind.conf  networkd.conf  resolved.conf  system  system.conf  timesyncd.conf  user  user.conf

Das wichtigste Unterverzeichnis hier ist /etc/systemd/system. Hier werden oft systemweite Unit-Dateien platziert oder darauf verwiesen. Lassen Sie uns in dieses Verzeichnis schauen.

Wechseln Sie Ihr aktuelles Verzeichnis mit dem cd-Befehl zu /etc/systemd/system.

cd /etc/systemd/system

Jetzt listen Sie den Inhalt dieses Verzeichnisses auf:

ls

Sie werden eine Liste von Dateien und Verzeichnissen sehen, von denen viele symbolische Links (->) sind, die auf die eigentlichen Unit-Dateien an anderer Stelle verweisen (oft in /lib/systemd/system). So werden Dienste aktiviert oder deaktiviert – indem diese symbolischen Links erstellt oder entfernt werden.

Beispielsweise könnten Sie etwas wie Folgendes sehen:

multi-user.target.wants -> /lib/systemd/system/multi-user.target.wants
sockets.target.wants -> /lib/systemd/system/sockets.target.wants
...

Die .wants-Verzeichnisse enthalten symbolische Links zu Diensten, die gestartet werden sollen, wenn dieses Ziel erreicht wird. Beispielsweise enthält multi-user.target.wants Links zu Diensten, die ausgeführt werden sollen, wenn das System sich in einem Mehrbenutzerzustand befindet (z.B. nach dem Booten).

Lassen Sie uns in das multi-user.target.wants-Verzeichnis schauen.

ls multi-user.target.wants/

Sie werden eine Liste von Diensten sehen, die für den Start im Mehrbenutzer-Ziel aktiviert sind.

anacron.service -> ../anacron.service
apache2.service -> ../../apache2.service
...

Dies zeigt, dass apache2.service hier verlinkt ist, was bedeutet, dass es für den Start mit dem Mehrbenutzer-Ziel aktiviert ist.

Das Erkunden des /etc/systemd/system-Verzeichnisses hilft Ihnen zu verstehen, wie systemd die Dienste auf Ihrem System organisiert und verwaltet.

Klicken Sie auf Weiter, um dieses Lab abzuschließen.

Zusammenfassung

In diesem Lab haben wir begonnen, systemd in Linux zu erkunden, wobei wir uns insbesondere darauf konzentriert haben, zu bestimmen, ob ein Systemdienst "maskiert" ist. Das Maskieren eines Dienstes ist eine Methode, um ihn vollständig zu deaktivieren und zu verhindern, dass er unter keinen Umständen startet. Wir haben gelernt, den Befehl systemctl is-masked zu verwenden, um den Maskierungsstatus bestimmter Dienste zu überprüfen. Dabei haben wir festgestellt, dass apache2 nicht maskiert war, während systemd-udevd-kernel.socket maskiert war. Das Verständnis des Maskierungsstatus ist ein grundlegender Schritt bei der Fehlersuche bei Problemen beim Starten von Diensten.

Anschließend haben wir systemctl list-unit-files verwendet, um einen umfassenderen Überblick über alle von systemd verwalteten Unit-Dateien zu erhalten. Diese sind Konfigurationsdateien, die verschiedene Systemressourcen und Dienste repräsentieren. Dieser Befehl liefert eine umfassende Liste der Units und ihrer Zustände und bietet einen breiteren Einblick in die Systemkonfiguration als die Überprüfung einzelner Dienste.