Udostępnij za pośrednictwem


Część 2.3.1 — [Opcjonalnie] Konfigurowanie aplikacji ASP.NET Core w systemie Linux w celu automatycznego uruchamiania w ramach innego użytkownika

Dotyczy: .NET Core 2.1, .NET Core 3.1, .NET 5

W tym artykule przedstawiono sposób konfigurowania aplikacji ASP.NET Core w systemie Linux w celu automatycznego uruchamiania w ramach innego użytkownika.

Wymagania wstępne

Aby wykonać ćwiczenia opisane w tej części, należy najpierw postępować zgodnie z konfiguracją opisaną w poprzednich częściach tej serii. Ponadto musisz mieć następujące elementy:

  • Maszyna wirtualna z systemem Linux, najlepiej z systemem Ubuntu 18.04 LTS dystrybucji systemu Linux.
  • Serwer Nginx działa automatycznie i nasłuchuje żądań na porcie 80.
  • Serwer Nginx skonfigurowany jako zwrotny serwer proxy i kierowanie żądań przychodzących do aplikacji ASP.NET Core nasłuchującej na porcie 5000.
  • Aplikacja ASP.NET Core skonfigurowana do automatycznego uruchamiania po ponownym uruchomieniu serwera lub zatrzymaniu lub awarii procesu.

Cel tej części

W poprzedniej części utworzono plik usługi dla naszej aplikacji ASP.NET Core i skonfigurowano usługę do uruchamiania w wbudowanym kontekście www-user.

Jednak w niektórych środowiskach możesz chcieć uruchamiać aplikacje w różnych kontekstach użytkownika. Zapewnia to pełną kontrolę nad izolacją od innych aplikacji, które mogą być uruchomione na tym samym serwerze. Jeśli na przykład hostujesz wiele aplikacji internetowych, możesz skonfigurować każdą aplikację do uruchamiania na własnym koncie użytkownika, aby mieć elastyczność konfigurowania uprawnień oddzielnie dla każdej aplikacji (zamiast uruchamiania wszystkich aplikacji w tym samym kontekście użytkownika www-data).

Celem jest skonfigurowanie aplikacji ASP.NET Core do uruchamiania na określonym koncie użytkownika.

Przećwiczyć sposób tworzenia użytkownika i dowiedzieć się, jak wyświetlić listę innych kont użytkowników dostępnych na komputerze.

Uwaga 16.

Ta część jest opcjonalna. Nie ma również znaczenia, w którym kontekście użytkownika uruchamiasz aplikację ASP.NET Core w pozostałej części serii samouczków.

Tworzenie nowego użytkownika do uruchamiania aplikacji

Zaczniesz od utworzenia nowego użytkownika i edytowania pliku usługi w celu uruchomienia usługi w tym nowym kontekście użytkownika. Aby utworzyć konto użytkownika, uruchom sudo adduser <username> polecenie . W tym pokazie wybrana nazwa użytkownika to firstappuser. Możesz jednak użyć dowolnej nazwy.

Zrzut ekranu przedstawiający polecenie sudo adduser.

Ten zrzut ekranu przedstawia wynik tworzenia firstappuser konta.

Pamiętaj, że usługa ASP.NET Core działa w kontekście użytkownika www-data. Jest to wbudowane konto, które jest używane dla aplikacji usług, w tym Apache i Nginx. Zalecamy użycie tego konta dla takich obciążeń. Jeśli sprawdzimy członkostwo w grupach użytkowników, uruchamiając groups www-data polecenia i groups firstappuser , nie zauważysz żadnych różnic.

Konta użytkowników lokalnych w systemie Linux są przechowywane w pliku /etc/passwd . Jeśli uruchomisz polecenie sudo cat /etc/passwd, zobaczysz wszystkich użytkowników, w tym użytkownika głównego. Poniższy zrzut ekranu opisuje każdą kolumnę.

Zrzut ekranu przedstawiający polecenie sudo cat.

Aby zobaczyć różnice między użytkownikami www-data i firstappuser , uruchom sudo cat /etc/passwd | grep 'www-data\|firstappuser' polecenie . Dane wyjściowe będą wyglądać podobnie do poniższych.

Zrzut ekranu przedstawiający polecenie sudo cat grep.

Uwaga 16.

Użytkownik www-data skonfigurował /usr/sbin/nologin powłokę. Oznacza to, że www-data użytkownik nie może zalogować się na tym komputerze interaktywnie przy użyciu protokołu SSH. firstappuser Jednak jest w stanie to zrobić. Ponieważ nowe konto będzie kontem usługi, ma sens, jako środek zabezpieczeń, aby zapobiec zalogowaniu się konta użytkownika.

Aby wyłączyć dostęp do powłoki, uruchom sudo usermod -s /usr/sbin/nologin firstappuser polecenie .

Zrzut ekranu przedstawiający polecenie sudo usermod.

Do tej pory utworzono konto (firstappuser), które może być używane jako konto usługi. Następnym krokiem jest skonfigurowanie usługi ASP.NET Core do uruchamiania na tym koncie użytkownika. Otwórz plik usługi przy użyciu polecenia vi. Zastąp ciąg "www-data" ciągiem "firstappuser" (lub dowolną wybraną nazwą użytkownika), a następnie zapisz plik.

Zrzut ekranu przedstawiający polecenie firstappuser.

Dzięki temu aplikacja ASP.NET Core może być uruchamiana przy użyciu innego konta użytkownika niż www-data domyślne konto.

Po zmianie pliku usługi załaduj ponownie konfigurację, uruchamiając polecenie sudo systemctl daemon-reload. Następnie uruchom ponownie usługę, uruchamiając polecenie sudo systemctl restart myfirstwebapp.service.

Sprawdź, czy aplikacja działa na nowym koncie użytkownika

Istnieje kilka metod identyfikowania użytkownika, który uruchamia określony proces. Możesz na przykład uruchomić polecenie ps -aux | grep <username>. Mimo że takie podejście może okazać się przydatne, nadal brakuje pewnych informacji, takich jak rzeczywista zawartość wiersza polecenia. Jednak istnieje prosty sposób zbierania bardziej pełnych informacji przy użyciu polecenia htop.

Uwaga: Htop jest menedżerem zadań. Zostanie wyjaśniona w dalszej części tej serii. Htop jest wstępnie zainstalowany w kilku dystrybucjach systemu Linux, w tym w wersji serwera Ubuntu, którego prawdopodobnie używasz. Jeśli htop nie jest zainstalowana w dystrybucji systemu Linux, możesz ją zainstalować za pomocą menedżerów pakietów.

Zapoznaj się z poniższym zrzutem ekranu. Możesz uzyskać ten element PID , uruchamiając polecenie systemctl status. Następnie przekaż polecenie PID do htop polecenia przy użyciu przełącznika -p , aby uzyskać szczegółowe informacje dotyczące PIDtego procesu.

Zrzut ekranu przedstawiający polecenie htop.

Oto dane wyjściowe htop -p <PID> polecenia.

Zrzut ekranu przedstawiający polecenie htop -p.

Jak pokazano na zrzucie ekranu, przykładowa aplikacja ASP.NET Core jest teraz uruchamiana pod nowym użytkownikiem utworzonym przy użyciu poleceń omówionych w tej części.

Aby zakończyć pracę htop, naciśnij F10 lub Q.

Następne kroki

Część 2.4 — Zabezpieczanie systemu Linux przy użyciu zapory lokalnej i zezwalanie na zdalny dostęp HTTP z komputerów zdalnych