Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für: .NET Core 2.1, .NET Core 3.1, .NET 5
In diesem Artikel wird erläutert, wie Sie die ASP.NET Core-Anwendung in Linux so konfigurieren, dass sie automatisch unter einem anderen Benutzer gestartet wird.
Voraussetzungen
Um den Übungen in diesem Teil zu folgen, müssen Sie zuerst das Setup befolgen, das in den vorherigen Teilen dieser Reihe beschrieben wird. Darüber hinaus müssen Sie folgendes haben:
- Ein virtueller Linux-Computer, vorzugsweise unter Ausführung der Ubuntu 18.04 LTS-Verteilung von Linux.
- Nginx wird automatisch ausgeführt und überwacht Anforderungen an Port 80.
- Nginx ist als Reverseproxy konfiguriert und routing eingehende Anforderungen an eine ASP.NET Core-Anwendung, die auf Port 5000 lauscht.
- Die ASP.NET Core-Anwendung, die so konfiguriert ist, dass sie automatisch gestartet wird, nachdem der Server neu gestartet wurde oder wenn der Prozess beendet oder abstürzt.
Ziel dieses Teils
Im vorherigen Teil haben Sie eine Dienstdatei für unsere ASP.NET Core-Anwendung erstellt und den Dienst so konfiguriert, dass er im integrierten Www-Benutzerkontext ausgeführt wird.
In einigen Umgebungen möchten Sie Ihre Anwendungen jedoch möglicherweise unter verschiedenen Benutzerkontexten ausführen. Dadurch erhalten Sie vollständige Kontrolle über die Isolierung anderer Anwendungen, die möglicherweise auf demselben Server ausgeführt werden. Wenn Sie beispielsweise mehrere Webanwendungen hosten, können Sie jede Anwendung so konfigurieren, dass sie unter einem eigenen Benutzerkonto ausgeführt wird, um die Flexibilität zu haben, Berechtigungen für jede Anwendung separat zu konfigurieren (anstatt alle Anwendungen unter demselben Www-Data-Benutzerkontext auszuführen).
Ziel ist es, die ASP.NET Core-Anwendung so zu konfigurieren, dass sie unter einem bestimmten Benutzerkonto ausgeführt wird.
Sie erfahren, wie Sie einen Benutzer erstellen und erfahren, wie Sie die anderen Benutzerkonten auflisten, die auf dem Computer verfügbar sind.
Notiz
Dieser Teil ist optional. Außerdem spielt es keine Rolle, in welchem Benutzerkontext Sie Ihre ASP.NET Core-Anwendung für den Rest der Lernprogrammreihe ausführen.
Erstellen eines neuen Benutzers zum Ausführen der Anwendung
Sie erstellen zunächst einen neuen Benutzer und bearbeiten Ihre Dienstdatei, um Ihren Dienst innerhalb dieses neuen Benutzerkontexts auszuführen. Führen Sie den sudo adduser <username>
Befehl aus, um das Benutzerkonto zu erstellen. Für diese Demonstration lautet firstappuser
der gewählte Benutzername . Sie können jedoch jeden gewünschten Namen verwenden.
Dieser Screenshot zeigt das Ergebnis des Erstellens des firstappuser
Kontos.
Erinnern Sie sich daran, dass der ASP.NET Core-Dienst im Www-Daten-Benutzerkontext ausgeführt wird. Dies ist ein integriertes Konto, das für Dienstanwendungen verwendet wird, einschließlich Apache und Nginx. Es wird empfohlen, dieses Konto für solche Workloads zu verwenden. Wenn wir die Gruppenmitgliedschaften beider Benutzer überprüfen, indem sie die groups www-data
Befehle groups firstappuser
ausführen, werden keine Unterschiede festgestellt.
Die lokalen Benutzerkonten in Linux werden in der Datei "/etc/passwd " gespeichert. Wenn Sie ausgeführt werden sudo cat /etc/passwd
, werden alle Benutzer angezeigt, einschließlich des Stammbenutzers. Der folgende Screenshot beschreibt jede Spalte.
Führen Sie den Befehl aus, um die Unterschiede zwischen den und firstappuser
den www-data
sudo cat /etc/passwd | grep 'www-data\|firstappuser'
Benutzern anzuzeigen. Die Ausgabe sieht wie folgt aus.
Notiz
Der www-data
Benutzer hat /usr/sbin/nologin
für die Shell konfiguriert. Dies bedeutet, dass sich der www-data
Benutzer nicht interaktiv mit SSH bei diesem Computer anmelden kann. firstappuser
Dies ist jedoch möglich. Da das neue Konto ein Dienstkonto ist, ist es sinnvoll, als Sicherheitsmaßnahme zu verhindern, dass sich das Benutzerkonto anmeldet.
Führen Sie den sudo usermod -s /usr/sbin/nologin firstappuser
Befehl aus, um den Shellzugriff zu deaktivieren.
Bisher haben Sie ein Konto (Firstappuser) erstellt, das als unser Dienstkonto verwendet werden kann. Der nächste Schritt besteht darin, den ASP.NET Core-Dienst so zu konfigurieren, dass er innerhalb dieses Benutzerkontos ausgeführt wird. Öffnen Sie die Dienstdatei mithilfe eines Vi-Befehls. Ersetzen Sie "www-data" durch "firstappuser" (oder den von Ihnen ausgewählten Benutzernamen), und speichern Sie dann die Datei.
Auf diese Weise kann die ASP.NET Core-Anwendung mit einem anderen Benutzerkonto als dem Standardkonto www-data
beginnen.
Nachdem Sie die Dienstdatei geändert haben, laden Sie die Konfiguration neu, indem Sie ausführen sudo systemctl daemon-reload
. Starten Sie den Dienst dann neu, indem Sie den Dienst ausführen sudo systemctl restart myfirstwebapp.service
.
Überprüfen, ob die Anwendung unter dem neuen Benutzerkonto ausgeführt wird
Es gibt mehrere Methoden, um den Benutzer zu identifizieren, der einen bestimmten Prozess ausführt. Sie können z. B. ausführen ps -aux | grep <username>
. Obwohl dieser Ansatz nützlich sein kann, fehlen weiterhin einige Informationen, z. B. der tatsächliche Befehlszeileninhalt. Es gibt jedoch eine einfache Möglichkeit, ausführlichere Informationen mithilfe von htop
Hinweis: Htop
ist ein Task-Manager. Sie wird später in dieser Reihe erläutert. Htop
ist in mehreren Linux-Distros vorinstalliert, einschließlich der Version des Ubuntu-Servers, den Sie wahrscheinlich verwenden. Wenn htop
sie nicht in Ihrer Linux-Distribution installiert ist, können Sie sie mithilfe von Paketmanagern installieren.
Sehen Sie sich den folgenden Screenshot an. Sie können die PID
Ausführung ausführen systemctl status
. Übergeben Sie dann den PID
Befehl mithilfe der -p
Option an den htop
Befehl, um die Details des Prozesses dafür PID
abzurufen.
Und hier ist die Ausgabe des htop -p <PID>
Befehls.
Wie der Screenshot zeigt, wird das Beispiel ASP.NET Core-Anwendung jetzt unter dem neuen Benutzer ausgeführt, der mithilfe der befehle erstellt wurde, die in diesem Teil erläutert werden.
Um zu beenden htop
, drücken Sie F10 oder Q.