Aracılığıyla paylaş


Bölüm 2.3.1 - [İsteğe bağlı] Linux'ta ASP.NET Core uygulamasını farklı bir kullanıcı altında otomatik olarak başlatacak şekilde yapılandırma

Şunlar için geçerlidir: .NET Core 2.1, .NET Core 3.1, .NET 5

Bu makalede, Linux'ta ASP.NET Core uygulamasının farklı bir kullanıcı altında otomatik olarak başlatacak şekilde nasıl yapılandırılması anlatılmaktadır.

Önkoşullar

Bu bölümdeki alıştırmaları takip etmek için, önce bu serinin önceki bölümlerinde açıklanan kurulumu izlemeniz gerekir. Ayrıca, aşağıdakilere sahip olmanız gerekir:

  • Tercihen Linux'un Ubuntu 18.04 LTS dağıtımını çalıştıran bir Linux sanal makinesi.
  • Nginx otomatik olarak çalışıyor ve 80 numaralı bağlantı noktasında istekleri dinliyor.
  • Nginx, 5000 numaralı bağlantı noktasında dinleyen bir ASP.NET Core uygulamasına ters ara sunucu olarak yapılandırıldı ve gelen istekleri yönlendirdi.
  • Sunucu yeniden başlatıldıktan veya işlem durdurulduğunda veya kilitlendiğinde otomatik olarak başlatacak şekilde yapılandırılmış ASP.NET Core uygulaması.

Bu bölümün hedefi

Önceki bölümde, ASP.NET Core uygulamamız için bir hizmet dosyası oluşturdunuz ve hizmeti yerleşik www-user bağlamında çalışacak şekilde yapılandırmıştınız.

Ancak bazı ortamlarda uygulamalarınızı farklı kullanıcı bağlamları altında çalıştırmak isteyebilirsiniz. Bu, aynı sunucuda çalışıyor olabilecek diğer uygulamalardan yalıtım üzerinde tam denetim sahibi olmanıza neden olur. Örneğin, birden çok web uygulaması barındırıyorsanız, her uygulama için izinleri ayrı olarak yapılandırma esnekliğine sahip olmak için her uygulamayı kendi kullanıcı hesabı altında çalışacak şekilde yapılandırmak isteyebilirsiniz (tüm uygulamaları aynı www-data kullanıcı bağlamı altında çalıştırmak yerine).

Amaç, ASP.NET Core uygulamasını belirli bir kullanıcı hesabı altında çalışacak şekilde yapılandırmaktır.

Kullanıcı oluşturma alıştırması yapacak ve bilgisayarda kullanılabilen diğer kullanıcı hesaplarını listelemeyi öğreneceksiniz.

Not

Bu bölüm isteğe bağlıdır. Öğretici serisinin geri kalanında ASP.NET Core uygulamanızı hangi kullanıcı bağlamında çalıştırdığınız da önemli değildir.

Uygulamanızı çalıştırmak için yeni kullanıcı oluşturma

Yeni bir kullanıcı oluşturarak ve hizmetinizi bu yeni kullanıcı bağlamında çalıştırmak için hizmet dosyanızı düzenleyerek başlayacaksınız. Kullanıcı hesabını oluşturmak için komutunu çalıştırın sudo adduser <username> . Bu gösterim için, seçilen kullanıcı adı şeklindedir firstappuser. Ancak, istediğiniz herhangi bir adı kullanmaktan çekinmeyin.

sudo adduser komutunun ekran görüntüsü.

Bu ekran görüntüsü, hesabı oluşturma işleminin firstappuser sonucunu gösterir.

ASP.NET Core hizmetinin www-data kullanıcı bağlamında çalıştığını hatırlayın. Bu, Apache ve Nginx gibi hizmet uygulamaları için kullanılan yerleşik bir hesaptır. Bu tür iş yükleri için bu hesabı kullanmanızı öneririz. ve groups firstappuser komutlarını çalıştırarak groups www-data her iki kullanıcının grup üyeliklerini de denetlersek herhangi bir fark görmezsiniz.

Linux'taki yerel kullanıcı hesapları /etc/passwd dosyasında depolanır. komutunu çalıştırırsanız sudo cat /etc/passwd, kök kullanıcı da dahil olmak üzere tüm kullanıcıları görürsünüz. Aşağıdaki ekran görüntüsünde her sütun açıklanmaktadır.

sudo cat komutunun ekran görüntüsü.

ve firstappuser kullanıcıları arasındaki www-data farkları görmek için komutunu çalıştırınsudo cat /etc/passwd | grep 'www-data\|firstappuser'. Çıkış aşağıdakine benzer olacaktır.

sudo cat grep komutunun ekran görüntüsü.

Not

Kullanıcı www-data kabuk için yapılandırdı /usr/sbin/nologin . Bu, www-data kullanıcının SSH kullanarak bu bilgisayarda etkileşimli olarak oturum açabileceği anlamına gelir. Ancak, firstappuser bunu yapabilir. Yeni hesap bir hizmet hesabı olacağı için, kullanıcı hesabının oturum açmasını önlemek bir güvenlik önlemi olarak mantıklıdır.

Kabuk erişimini devre dışı bırakmak için komutunu çalıştırın sudo usermod -s /usr/sbin/nologin firstappuser .

sudo usermod komutunun ekran görüntüsü.

Şimdiye kadar hizmet hesabı olarak kullanılabilecek bir hesap (firstappuser) oluşturdunuz. Sonraki adım, ASP.NET Core hizmetini bu kullanıcı hesabı içinde çalışacak şekilde yapılandırmaktır. Vi komutunu kullanarak hizmet dosyasını açın. "www-data" yerine "firstappuser" (veya seçtiğiniz kullanıcı adı) yazın ve dosyayı kaydedin.

komuttaki firstappuser öğesinin ekran görüntüsü.

Bu, ASP.NET Core uygulamasının varsayılan www-data hesaptan farklı bir kullanıcı hesabı kullanarak başlatılmasını sağlar.

Hizmet dosyasını değiştirdikten sonra komutunu çalıştırarak sudo systemctl daemon-reloadyapılandırmayı yeniden yükleyin. Ardından komutunu çalıştırarak sudo systemctl restart myfirstwebapp.servicehizmetinizi yeniden başlatın.

Uygulamanın yeni kullanıcı hesabı altında çalıştığını doğrulayın

Belirli bir işlemi çalıştıran kullanıcıyı tanımlamak için çeşitli yöntemler vardır. Örneğin, komutunu çalıştırabilirsiniz ps -aux | grep <username>. Bu yaklaşım yararlı olabilir ancak gerçek komut satırı içeriği gibi bazı bilgileri yine de kaçıracaksınız. Ancak, kullanarak htopdaha eksiksiz bilgiler toplamanın kolay bir yolu vardır.

Not: Htop bir görev yöneticisidir. Bu serinin ilerleyen bölümlerinde açıklanacaktır. Htop , büyük olasılıkla kullanmakta olduğunuz Ubuntu sunucusunun sürümü de dahil olmak üzere çeşitli Linux dağıtımlarında önceden yüklenmiştir. Linux dağıtımınızda yüklü değilse htop paket yöneticilerini kullanarak yükleyebilirsiniz.

Aşağıdaki ekran görüntüsünü inceleyin. komutunu çalıştırarak systemctl statusalabilirsinizPID. Ardından, anahtarı kullanarak -p komutunu komutuna htop geçirerek PID işlemin PIDayrıntılarını alın.

htop komutunun ekran görüntüsü.

Komutun çıktısı aşağıdadır htop -p <PID> .

htop -p komutunun ekran görüntüsü.

Ekran görüntüsünde gösterildiği gibi örnek ASP.NET Core uygulaması artık bu bölümde açıklanan komutlar kullanılarak oluşturulan yeni kullanıcı altında çalıştırılır.

uygulamasından çıkmak htopiçin F10 veya Q tuşuna basın.

Sonraki adımlar

Bölüm 2.4 - Yerel güvenlik duvarı kullanarak ve uzak bilgisayarlardan uzaktan HTTP erişimine izin vererek Linux'un güvenliğini sağlama