IIS7 İzinlerine Genel Bakış - ApplicationPoolIdentity


356

Kısa bir süre önce çekirdek bir web sunucusu olarak IIS7'ye geçtik ve izinler konusunda bir genel bakıma ihtiyacım var. Daha önce, dosya sistemine yazmak gerektiğinde AppPool kullanıcısına (Şebeke Servisi) dizine veya dosyaya erişim verirdim.

IIS7'de AppPool kullanıcısının varsayılan olarak ayarlandığını görüyorum ApplicationPoolIdentity. Görev yöneticisini kontrol ettiğimde, 'WebSite.com' adlı bir kullanıcı hesabının IIS İşlemini çalıştırdığını görüyorum ('Website.com' IIS'deki web sitesinin adıdır)

Ancak, izin vermek için bunu kullanmaya çalışırsam bu kullanıcı hesabı yok. Peki, hangi kullanıcının izinleri vereceğini nasıl belirlerim?

Düzenle ================================================ =============================

Ekran görüntüsündeki sorun için aşağıya bakın. Web sitemiz (www.silverchip.co.uk) SilverChip.co.uk kullanıcı adında çalışır. Ancak pemissions eklediğimde, bu kullanıcı var!

resim açıklamasını buraya girin

================================= AppPool Görüntüsüne Bakın

resim açıklamasını buraya girin


2
Aslında bu konudaki microsoft bilgileri çok iyi Uygulama Havuzu Kimlikleri
DanielV

Yanıtlar:


680

ApplicationPoolIdentity aslında IIS7 + 'da kullanılacak en iyi uygulamadır. Dinamik olarak oluşturulmuş, ayrıcalıksız bir hesaptır. Belirli bir uygulama havuzuna dosya sistemi güvenliği eklemek için IIS.net'in "Uygulama Havuzu Kimlikleri" ne bakın . Hızlı sürüm:

Uygulama havuzu "DefaultAppPool" olarak adlandırılmışsa (farklı adlandırılmışsa aşağıdaki metni değiştirin)

  1. Windows Gezgini'ni açın
  2. Bir dosya veya dizin seçin.
  3. Dosyayı sağ tıklayın ve "Özellikler" i seçin
  4. "Güvenlik" sekmesini seçin
  5. "Düzenle" yi ve ardından "Ekle" düğmesini tıklayın
  6. "Yerler" düğmesini tıklayın ve yerel makineyi seçtiğinizden emin olun . ( Sunucu bir taneye aitse Windows etki alanı değil .)
  7. " Seçilecek nesne adlarını girin:" metin kutusuna " IIS AppPool \ DefaultAppPool " girin. (Burada "DefaultAppPool" ifadesini uygulama havuzunuzu adlandırdığınız adla değiştirmeyi unutmayın.)
  8. "Adları Kontrol Et" düğmesini ve "Tamam" ı tıklayın.

11
@Pino: Hayır, web sitesinin adı değil. Uygulama havuzu adını kullanın . Her web sitesi bir uygulama havuzuna atanır. Web sitesinin özellikleri Temel Ayarlar iletişim kutusundan hangisini (IIS7'de) anlatabilirsiniz.
Jon Adams

2
@Pino: Bu durumda kullanmanız gereken güvenlik rolüdür IIS AppPool\silverchip.co.uk. Güvenlik adlarında dönemleri denemedim - noktalama işareti olmadan bir şeye değiştirmek isteyebilirsiniz.
Jon Adams

7
Söylediğin gibi talimatları izledim. Ama bir tane kesmek var. Sen özelliğini ayarlayın zorunda enable load user profileiçin trueuygulama havuzu ayarlarında. Ve ancak bu ayardan sonra uygulamayı çalıştırabildim. Lütfen talimatlarınızı güncelleyin ve 9. noktayı ekleyin.
Johnny_D

19
Anonim kimlik doğrulaması için sunucu ayarlarının da Uygulama havuzu kimliğini kullanıp kullanmadığını kontrol etmeyi unutmayın. Bu çözüm, IUSR'den geri döner dönmez benim için çalıştı.
bblue

11
Burada dikkat edin! Userinterface kullanarak kullanıcıyı arayamazsınız, ancak yazmanız gerekir. Yapabileceğiniz tek şey, adı denetlemektir.
Remco

88

Adı çözümlerken sunucunun yerel adını değil, etki alanı adını kullanmayı unutmayın.

IIS AppPool\DefaultAppPool

(bu sadece beni hatırlattı çünkü bir hatırlatma):resim açıklamasını buraya girin


Evet, bunu her zaman unutuyorum, hatırlatıcı James Toomey için teşekkürler!
tjans

30

IIS AppPool \ YourAppPoolName kullanıcısına erişim izni vermek IIS varsayılan yapılandırmaları ile yeterli olmayabilir .

Benim durumumda, hala HTTP Hatası 401.3 - AppPool kullanıcısı eklendikten sonra yetkisiz hata alıyorum ve sadece IUSR kullanıcısına izinler eklendikten sonra düzeltildi .

Varsayılan olarak, IUSR kullanılarak Anonim erişim yapıldığı için bu gereklidir . Başka bir kullanıcı, Uygulama Havuzu ayarlayabilir veya IUSR'yi kullanmaya devam edebilirsiniz, ancak uygun izinleri ayarlamayı unutmayın.

kimlik doğrulama sekmesi

Bu yanıta verilen krediler: HTTP Hatası 401.3 - Yetkisiz


3
Bu çok önemli !!! Güvenlik için "Anonim Kimlik Doğrulama" yı "Uygulama havuzu kimliği" olarak değiştirmelisiniz! Eminim bunun IUSR'ye ayarlanmasının iyi bir nedeni vardır, ancak tek bir tane düşünemiyorum. Teşekkürler!!!
Dan B

Bu benim için sorunu çözdü. Bunun nedeni, IIS
sürümümün

2
Bu, kabul edilen cevaba eklenmesi gereken önemli bir adımdır. Ayrıca en basit yol, radyo kutusunu Uygulama havuzu kimliği olarak değiştirmektir
Sourcery

1
Bu benim sorunumdu! Teşekkür ederim!!
Sloan Reynolds

28

Windows Server 2008'de (r2) Özellikler-> Güvenlik aracılığıyla bir klasöre uygulama havuzu kimliği atayamazsınız. Bunu aşağıdakileri kullanarak bir yönetici komut istemi ile yapabilirsiniz:

icacls "c:\yourdirectory" /t /grant "IIS AppPool\DefaultAppPool":(R)

1
bunu biraz açıklayabilir misin (R) anlamı ne? Bu komutta gerçekten açılı ayraçlar mı giriyorsunuz?
Kate Gregory

3
Merhaba Kate, <> burada "adının adını" belirtmek için <> kullanıyordum, ama meşru bir ad adı bıraktım. IIS Yöneticisi -> Uygulama Havuzları'nda, dahil edilen adla eşleşmeniz gerekir. Son yaptığım "IIS AppPool \ ClientName_CompanyName - Intranet" idi. : (R) bu durumda okuma erişimi veriyor. Ayrıca F (tam), M (değiştir), RX (okuma + yürütme) ve W (yalnızca yazma) da kullanabilirsiniz.
Chris

9
Windows Server 2008 R2'deki Özellikler'deki Güvenlikler sekmesi aracılığıyla atayabilirsiniz, bu nedenle bu geçici çözüme ihtiyacınız yoktur. Nesne türleri ve konumlarında yerleşik güvenlik ilkeleri seçtiğinizden emin olun.
rism

Bu cevap benim için çalışıyor. Seçilen cevap benim için çalışmıyor.
Tuyen Nguyen

3
ayrıca bkz. [link] serverfault.com/questions/81165/… adresinin özgün yanıtına bakın. Düz Windows Server 2008 (veya Datacenter sürümü) için, uygulama havuzu hesabını güvenli hale getirmek için hemen hemen komut satırını kullanmanız gerekir iletişim. Bir kez orada, alt dizinler vb için yönetebilir, izin düzeylerini değiştirebilirsiniz. Ayrıca şunu da göz önünde bulundurun: "icacls" c: \ dizininiz "/ t / grant" IIS AppPool \ DefaultAppPool ":( OI) (CI) (R)" OI -nesne kalıtım, CI-konteyner kalıtım.
secretwep

7

Bölüm A: Uygulama Havuzunuzu Yapılandırma

Uygulama Havuzu'nun 'MyPool' olarak adlandırıldığını varsayalım IIS Yöneticisi'nden Uygulama Havuzu'nun 'Gelişmiş Ayarlar'a gidin

  1. 'Kimlik'e gidin. Değeri düzenlemeye çalışmak bir iletişim kutusu açar. 'Yerleşik hesap'ı seçin ve altında' ApplicationPoolIdentity'yi seçin.

  2. 'Kimlik'in altında birkaç satır varsa,' Kullanıcı Profilini Yükle'yi bulmalısınız. Bu değer 'True' olarak ayarlanmalıdır.

Bölüm B: Web sitenizi yapılandırma

  1. Web Sitesi Adı: SiteAdı (sadece bir örnek)
  2. Fiziksel Yol: C: \ Her neyse (sadece bir örnek)
  3. Farklı bağlan ...: Uygulama Kullanıcısı (doğrudan kimlik doğrulaması) (Yukarıdaki ayarlar, IIS Yöneticisi'ndeki sitenin 'Temel Ayarlar' bölümünde bulunabilir)
  4. Temel ayarları yapılandırdıktan sonra, sitenin ana konsolunda 'IIS' altında 'Kimlik Doğrulama' yapılandırmasını bulun. Aç onu. 'Anonim Kimlik Doğrulama' için bir seçenek görmelisiniz. Etkin olduğundan emin olun. Sonra sağ tıklayın ve 'Düzenle ...'. 'Uygulama Havuzu Kimliği'ni seçin.

Bölüm C: Klasörünüzü yapılandırma

Söz konusu klasör C: \ Whatever

  1. Özellikler - Paylaşım - Gelişmiş Paylaşım - İzinler'e gidin ve 'Bu klasörü paylaş' seçeneğini işaretleyin
  2. Aynı iletişim kutusunda bir düğme 'İzinler' bulacaksınız. Tıkla.
  3. Yeni bir iletişim kutusu açılacaktır. 'Ekle'yi tıklayın.
  4. Yeni bir 'Kullanıcı veya Grup Seç' iletişim kutusu açılır. 'Bu konumdan' altında, adın yerel ana bilgisayarınızla aynı olduğundan emin olun. Ardından, 'Nesne adlarını girin' altında, 'IIS AppPool \ MyPool' yazın ve 'Adları Kontrol Et'i ve ardından' Tamam'ı tıklayın
  5. 'MyPool' kullanıcısı için tam paylaşım izinleri verin. Uygula ve klasör özelliklerini kapat
  6. Klasör özelliklerini tekrar açın. Bu kez Güvenlik - Gelişmiş - İzin'e gidin ve Ekle'yi tıklayın. Üstte 'Bir İlke Seç' seçeneği veya bir kullanıcı seçmek için başka bir seçenek olacaktır. Tıkla.
  7. 'Kullanıcıları veya Grupları Seç' iletişim kutusu tekrar açılır. 4. adımı tekrarlayın.
  8. 'MyPool' kullanıcısına ihtiyacınız olan tüm veya çok sayıda izni verin.
  9. 'Tüm alt nesne izinlerini değiştir ... "seçeneğini işaretleyin ve Uygula ve kapat.

Artık web sitesine göz atmayı kullanabilmelisiniz


Sen ormanın kralısın! Thank you
tno2007

5

Top Yanıt

PowerShell kullanıcıları için bunu nasıl uygulayacağınız aşağıda açıklanmıştır

$IncommingPath = "F:\WebContent"
$Acl = Get-Acl $IncommingPath
$Ar = New-Object  system.security.accesscontrol.filesystemaccessrule("IIS AppPool\DefaultAppPool","FullControl","ContainerInherit, ObjectInherit", "None", "Allow")
$Acl.SetAccessRule($Ar)
Set-Acl $IncommingPath $Acl

1

Sadece karışıklığa eklemek için, (Windows Gezgini) Etkili İzinler iletişim kutusu bu girişler için çalışmaz. Doğrudan kimlik doğrulaması kullanarak bir sitem "Umbo4" var ve site kök klasöründe kullanıcının Etkili İzinleri baktı. Adları Denetle testi "IIS AppPool \ Umbo4" adını çözdü, ancak Etkili İzinler kullanıcının klasörde hiç izninin olmadığını gösterir (tüm onay kutuları işaretlenmemiş).

Daha sonra bu kullanıcıyı Explorer Security sekmesini kullanarak açıkça klasörden hariç tuttum. Bu, sitenin beklendiği gibi bir HTTP 500.19 hatasıyla sonuçlanmasına neden oldu. Ancak Etkili İzinler tam olarak eskisi gibi görünüyordu.


1

Tüm asp.net sorunlarımı sadece bir şifre ile IUSER adlı yeni bir kullanıcı oluşturarak çözdüm ve Ağ Hizmeti ve Kullanıcı Grupları ekledim. Daha sonra tüm sanal sitelerinizi ve uygulamalarınızı şifresi ile IUSER'a ayarlayın .. IUSER ve BAM dahil olmak üzere üst düzey dosya erişimini ayarlayın, bu da dahil olmak üzere en az 3-4 sorunu düzeltti ..

Dave

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.