Teil 2.3.1 – [Optional] Konfigurieren der ASP.NET Core-Anwendung in Linux so, dass sie automatisch unter einem anderen Benutzer gestartet wird
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 ist. Darüber hinaus benötigen Sie Folgendes:
- Ein virtueller Linux-Computer, der vorzugsweise die Ubuntu 18.04 LTS-Distribution von Linux ausführt.
- Nginx wird automatisch ausgeführt und lauscht auf Anforderungen an Port 80.
- Nginx, das als Reverseproxy konfiguriert ist und eingehende Anforderungen an eine ASP.NET Core Anwendung weiterleitet, die an 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 wird oder abstürzt.
Ziel dieses Teils
Im vorherigen Teil haben Sie eine Dienstdatei für unsere ASP.NET Core-Anwendung erstellt und den Dienst für die Ausführung im integrierten www-user-Kontext konfiguriert.
In einigen Umgebungen sollten Sie Ihre Anwendungen jedoch unter unterschiedlichen Benutzerkontexten ausführen. Dadurch erhalten Sie die vollständige Kontrolle über die Isolierung von anderen Anwendungen, die möglicherweise auf demselben Server ausgeführt werden. Wenn Sie beispielsweise mehrere Webanwendungen hosten, sollten Sie jede Anwendung so konfigurieren, dass sie unter ihrem eigenen Benutzerkonto ausgeführt wird, um die Flexibilität zu haben, Berechtigungen separat für jede Anwendung zu konfigurieren (anstatt alle Anwendungen unter demselben www-data-Benutzerkontext auszuführen).
Das Ziel besteht darin, 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 wie Sie die anderen Benutzerkonten auflisten, die auf dem Computer verfügbar sind.
Hinweis
Dieser Teil ist optional. Es spielt auch 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 ihrer Anwendung
Beginnen Sie damit, einen neuen Benutzer zu erstellen und Ihre Dienstdatei so zu bearbeiten, dass Ihr Dienst in diesem neuen Benutzerkontext ausgeführt wird. Führen Sie den Befehl aus, um das Benutzerkonto zu sudo adduser <username> erstellen. Für diese Demonstration lautet der gewählte Benutzername firstappuser . Verwenden Sie jedoch gerne einen beliebigen Namen.
Dieser Screenshot zeigt das Ergebnis der Erstellung des firstappuser Kontos.
Denken Sie daran, dass der ASP.NET Core Dienst im Www-Data-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 wir die groups www-data groups firstappuser Und-Befehle ausführen, werden Sie keine Unterschiede feststellen.
Die lokalen Benutzerkonten in Linux werden in der Datei /etc/passwd gespeichert. Wenn Sie sudo cat /etc/passwd ausführen, werden alle Benutzer angezeigt, einschließlich des Stammbenutzers. Im folgenden Screenshot werden die einzelnen Spalten beschrieben.
Führen Sie den Befehl aus, um die Unterschiede zwischen den www-data firstappuser Benutzern sudo cat /etc/passwd | grep 'www-data\|firstappuser' anzuzeigen. Die Ausgabe sieht wie folgt aus.
Hinweis
Der www-data Benutzer hat die Shell /usr/sbin/nologin konfiguriert. Dies bedeutet, dass sich der www-data Benutzer nicht interaktiv mithilfe von SSH bei diesem Computer anmelden kann. Dies ist jedoch firstappuser möglich. Da es sich bei dem neuen Konto um ein Dienstkonto handeln wird, ist es als Sicherheitsmaßnahme sinnvoll, die Anmeldung des Benutzerkontos zu verhindern.
Führen Sie den Befehl aus, um den Shellzugriff zu sudo usermod -s /usr/sbin/nologin firstappuser 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 einen beliebigen Benutzernamen), und speichern Sie die Datei.
Dadurch kann die ASP.NET Core Anwendung mit einem anderen Benutzerkonto als dem www-data Standardkonto beginnen.
Nachdem Sie die Dienstdatei geändert haben, laden Sie die Konfiguration neu, indem Sie sudo systemctl daemon-reload ausführen. Starten Sie dann Ihren Dienst neu, indem Sie sudo systemctl restart myfirstwebapp.service .
Überprüfen, ob die Anwendung unter einem neuen Benutzerkonto ausgeführt wird
Es gibt mehrere Methoden, um den Benutzer zu identifizieren, der einen bestimmten Prozess ausführt. Sie können z. ps -aux | grep <username> B. ausführen. Obwohl sich dieser Ansatz als nützlich erweisen kann, fehlen Ihnen weiterhin einige Informationen, z. B. der tatsächliche Befehlszeileninhalt. Es gibt jedoch eine einfache Möglichkeit, vollständigere Informationen mithilfe von htop zu sammeln.
Hinweis: Htop Ist ein Task-Manager. Dies wird später in dieser Reihe erläutert. Htop ist in mehreren Linux-Distributionen 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 Paket-Managern installieren.
Überprüfen Sie den folgenden Screenshot. Sie können die abrufen, indem Sie PID systemctl status ausführen. Übergeben Sie dann den PID Befehl an den htop Befehl, indem Sie den Switch -p verwenden, um die Details des Prozesses dafür PID abzurufen.
Und hier sehen Sie 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 in diesem Teil beschriebenen Befehle erstellt wurde.
Drücken Sie zum Beenden htop F10 oder F.