Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Ş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.
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.
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.
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
.
Ş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.
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-reload
yapılandırmayı yeniden yükleyin. Ardından komutunu çalıştırarak sudo systemctl restart myfirstwebapp.service
hizmetinizi 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 htop
daha 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 status
alabilirsinizPID
. Ardından, anahtarı kullanarak -p
komutunu komutuna htop
geçirerek PID
işlemin PID
ayrıntılarını alın.
Komutun çıktısı aşağıdadır htop -p <PID>
.
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 htop
için F10 veya Q tuşuna basın.