IIS8'de IIS_IUSRS ve IUSR izinleri


150

ASP.NET uygulamalarını barındırmak için Win2003'te IIS6'dan Win2012'de IIS8'e yeni geçtim.

Uygulamamdaki belirli bir klasör içinde dosya oluşturmam ve silmem gerekiyor. Dosyaları yeni sunucuya kopyaladıktan sonra, dosyaları silmeye çalıştığımda aşağıdaki hataları görmeye devam ettim:

'D: \ WebSites \ myapp.co.uk \ companydata \ filename.pdf' yoluna erişim reddedildi.

IIS'yi kontrol ettiğimde, uygulamanın DefaultAppPool hesabı altında çalıştığını görüyorum, ancak bu klasörde Windows izinlerini IIS AppPool \ DefaultAppPool'u içerecek şekilde ayarlamadım

Bunun yerine, çığlık atan müşterileri durdurmak için klasörde aşağıdaki izinleri verdim:

IUSR

  • Oku ve Yürüt
  • Klasör içeriğini listele
  • Okuyun
  • Yazmak

IIS_IUSRS

  • Değiştir
  • Oku ve Yürüt
  • Klasör içeriğini listele
  • Okuyun
  • Yazmak

Bu işe yaramış gibi görünüyor, ancak çok fazla ayrıcalığın ayarlandığından endişeleniyorum. IUSR'nin gerçekten gerekli olup olmadığı konusunda çevrimiçi olarak çelişkili bilgiler okudum . Bu klasördeki belgeleri Oluşturmak ve Silmek için hangi kullanıcıların / izinlerin yeterli olacağını herkes açıklayabilir mi? Ayrıca, IIS_IUSRS grubunun IUSR parçası mı?

Güncelleme ve Çözüm

Lütfen aşağıdaki cevabıma bakın . Bunu ne yazık ki yapmak zorunda kaldım çünkü son zamanlarda yapılan bazı öneriler iyi düşünülmedi, hatta güvenli değildi (IMO).


WordPress'in bir Azure sanal makinesinde (Windows Server 2012 Datacenter) IIS 8 üzerinde çalışmasını sağlamak için, inetpub / wwwroot
dumbledad

Joomla'yı IIS altında çalıştırmaya çalıştıkları ve dosya güvenlik ayarlarıyla ilgili sorunlar yaşadıkları için bu konu başlığına gelenler için, uygun çözüm olduğunu düşündüğüm bir blog yazısı yazdım. Muhtemelen WordPress veya diğer PHP tabanlı web sunucusu programları için de geçerlidir. renniestechblog.com/index.php/information/…
RenniePet


IIS_IUSRS kullanıcı grubu için klasör için tam izin ekledikten sonra sorunsuz çalışıyor.
Thulasiram

@Thulasiram, ancak daha sonra tüm IIS Kullanıcılarına tam ayrıcalıklar verdiniz. Bunu bir hacker'ın bakış açısından düşünün. Zayıf bir site ve geri kalan her şeyin tamamen kontrolünü ele
geçirirler

Yanıtlar:


153

Kendi cevabımı göndermekten nefret ediyorum, ancak bazı cevaplar son zamanlarda kendi sorumda yayınladığım çözümü görmezden geldi ve bu da çılgınlıktan başka bir şey olmayan yaklaşımlar önerdi.

Kısacası - hiçbir Windows kullanıcı hesabı ayrıcalığını düzenlemenize gerek yoktur . Bunu yapmak yalnızca risk getirir. Süreç, devralınan ayrıcalıklar kullanılarak tamamen IIS'de yönetilir.

Doğru Kullanıcı Hesabına Değiştirme / Yazma İzinlerini Uygulama

  1. Siteler listesinin altında göründüğünde alanı sağ tıklayın ve İzinleri Düzenle'yi seçin.

    görüntü açıklamasını buraya girin

    Güvenlik sekmesinin altında MACHINE_NAME\IIS_IUSRSlistelendiğini göreceksiniz . Bu, IIS'nin dizinde otomatik olarak salt okunur izne sahip olduğu anlamına gelir (örneğin, sitede ASP.Net'i çalıştırmak için). Bu girişi düzenlemenize gerek yoktur .

    görüntü açıklamasını buraya girin

  2. Düzenle düğmesini ve ardından Ekle ... düğmesini tıklayın .

  3. Metin kutusuna, yazın IIS AppPool\MyApplicationPoolNameyerine, MyApplicationPoolNameörneğin uygulama havuzu Sitenize erişen ne olursa olsun alan adının veya birlikteIIS AppPool\mydomain.com

    görüntü açıklamasını buraya girin

  4. Adları Kontrol Et düğmesine basın . Yazdığınız metin dönüşecek (alt çizgiye dikkat edin):

    görüntü açıklamasını buraya girin

  5. Kullanıcıyı eklemek için Tamam'a basın

  6. Yeni kullanıcı (etki alanınız) seçildiğinde, artık herhangi bir Değiştirme veya Yazma izinlerini güvenle sağlayabilirsiniz.

    görüntü açıklamasını buraya girin


2
Bu, IIS 8.5 sunucumda çalışmadı. Eser IUSRekleniyor. IIS AppPool\Cache(Uygulama havuzumun adı) eklenmesi sonuçlarıHTTP Error 401.3 - Unauthorized
Charles Burns

14
@CharlesBurns Aynı sorunu yaşadım, bunun temel nedenim olduğunu gördüm : techras.wordpress.com/2016/03/09/… (anonim kimlik doğrulama, Uygulama Havuzu Kimliği yerine IUSR kullanacak şekilde ayarlandı)
Jon

2
Yalnızca Sanal Dizin olarak kullanılan bir klasörüm vardı ve onu başka bir etki alanı hesabıyla paylaşana kadar iyi çalıştı (işaret ettiği windows klasörü), böylece dosyaları intranetimiz üzerinden görüntüleyebilirdi. Bunu yaptığımda, Sanal Dizindeki dosyalar aniden erişilemez hale geldi. Her ikisini de eklemek zorunda kaldım MyComputerName\IIS_IUSRSve IUSRtekrar çalışması için Salt Okunur izinleri aldım . Bu sadece Sanal Dizinler içindir (.net Uygulamaları değil), ancak birinin onu yararlı bulabileceğini düşünün.
MikeTeeVee

16
Sadece bir not: Kullanıcıyı aradığınızda ve bilgisayar bir etki alanının üyesi olduğunda, IIS AppPool \ MyApplicationPoolName bulunamayabilir. Benim durumumda, Konumlar düğmesini tıklamam ve konumu yerel bilgisayar olarak değiştirmem gerekiyordu.
statler

3
Testlerimde burada kullanılacak özel kullanıcının adının bir alan adı ile ilgisi yoktur. IIS'de siteye atanan Uygulama Havuzunun adıdır. Bu Uygulama Havuzu, web sitenizin etki alanıyla eşleşen bir ada sahip olabilir veya olmayabilir. Yani model şöyledir: IIS AppPool\[APPLICATION POOL NAME]. Uygulama Havuzu adındaki boşluklar kabul edilir. Lütfen bu kullanıcının yalnızca ad araması için nesne türü olarak "Yerleşik güvenlik sorumluları" işaretlendiğinde bulunacağını unutmayın ("Kullanıcıları veya Grupları Seçin" iletişim kutusundaki üst alan).
Jpsy

50

IUSR, IIS_IUSER grubunun bir parçasıdır. Bu yüzden endişelenmeden IUSR izinlerini kaldırabilirsiniz. Daha fazla okuma

Ancak, giderek daha fazla Windows sistem hizmeti NETWORKSERVICE olarak çalışmaya başladıkça zamanla bir sorun ortaya çıktı. Bunun nedeni, NETWORKSERVICE olarak çalışan hizmetlerin aynı kimlik altında çalışan diğer hizmetlere müdahale edebilmesidir. IIS çalışan işlemleri varsayılan olarak üçüncü taraf kodu çalıştırdığı için (Klasik ASP, ASP.NET, PHP kodu), IIS çalışan işlemlerini diğer Windows sistem hizmetlerinden ayırmanın ve IIS çalışan işlemlerini benzersiz kimlikler altında çalıştırmanın zamanı gelmişti. Windows işletim sistemi, IIS'nin Uygulama Havuzlarının her biri için benzersiz kimlikler oluşturmasına olanak tanıyan "Sanal Hesaplar" adlı bir özellik sağlar. DefaultAppPool, oluşturduğunuz tüm Uygulama Havuzuna atanan varsayılan havuzdur.

Daha güvenli hale getirmek için IIS DefaultAppPool Kimliğini ApplicationPoolIdentity olarak değiştirebilirsiniz.

İzin ile ilgili olarak, Oluştur ve Sil verilebilecek tüm hakları özetler. Yani, IIS_USERS grubuna ne atadıysanız, ihtiyaç duyacaklarıdır. Ne fazla ne eksik.

Bu yardımcı olur umarım.


3
Server Essentials 2012 R2 altında IIS 8'i yeni kurdum. Bu makine aynı zamanda bir etki alanı denetleyicisidir. AD Kullanıcıları ve Bilgisayarlarında, IIS_IUSRS grubu boştur - IUSR kullanıcısını içermez. Sanırım onu ​​gruba ekleyebilirim, ancak anonim siteler için IUSR kullanıcısına sadece izinler vereceğim.
Mark Berry

7
IUSR için izinler verdiğimde işe yaradı. IIS_IUSER'a izin verdiğimde işe yaramadı.
ihebiheb

Iusr, IIS_Iusrs üyesi değildir. (veya pencerelerde bir hata vardır) Genellikle Windows, IIS_Iusrs kullanır. (dinamik sayfaları yürütme veya statik sayfalara erişme) ancak bazı durumlar vardır, pencereler IIS_Iusrs yerine Iusr kullanır. PHP kullanarak dosya yüklemek bu durumlardan biridir. (ve sadece iis_iusr verdiyseniz, ayrıcalık istisnasını karşılayacaksınız) Bence M $, Iusr ve IIS_Iusrs'a izin vermek için "En iyi uygulama" vermeli ...
finejustice

Sanırım şimdi Uygulama havuzu grubu yani (IWGP) olarak değiştirildi. IWGP'ye izinler verdim ve işe yaradı.
Rohit Arora

6
IUSR, IIS_IUSER'ın bir parçasıdır. HAYIR ÖYLE DEĞİL! IUSR, anonim kullanıcıdır, IIS_IUSER, apppool kullanıcıları için bir gruptur
giammin

6

Site klasörüne IIS_IUSRS izni eklediğimde - js ve css gibi kaynaklar hala erişilemez durumdaydı (hata 401, yasak). Ancak, IUSR'yi eklediğimde - sorun oldu. Bu yüzden kesinlikle "IUSR izinlerini endişelenmeden KALDIRAMAZSINIZ", sevgili @Travis G @


7
Unutmayın (eğer IIS7 + varsa) doğru çözüm, IIS AppPool\MyApplicationPoolNamegüncellenmiş cevabıma göre kullanmaktır. Artık IUSR (S) ile uğraşmanıza gerek yok!
EvilDr

2
Önerinizi denedim ama işe yaramıyor. IUSR'yi (S) izninden kaldırdım ve yalnızca havuz adı olarak kaldım, uygulama altında çalışıyor. Kaynaklar erişilemez hale geldi. IIS 8.5. IUSR'yi eklediğimde - işe yaradı.
Alexander

Lütfen durumunuzla ilgili olabildiğince fazla bilgi içeren kendi sorunuzu göndermelisiniz.
EvilDr

4

@EvilDr AD ortamınızda bir IUSR_ [tanımlayıcı] hesabı oluşturabilir ve belirli uygulama havuzunun o IUSR_ [tanımlayıcı] hesabı altında çalışmasına izin verebilirsiniz:

"Uygulama havuzu"> "Gelişmiş Ayarlar"> "Kimlik"> "Özel hesap"

Gelişmiş Ayarlar'da web sitenizi "Özel kullanıcı" yerine "Uygulama kullanıcısı (geçiş kimlik doğrulaması)" olarak ayarlayın.

Şimdi bu IUSR_ [tanımlayıcı] 'ya dosyalar ve klasörler için uygun NTFS izinlerini verin, örneğin: şirket verilerini değiştirin.


Teşekkürler ama AD kullanmıyorum. Ayrıca en son MS belgelerine göre, IIS 7 & 8 zaten açıkladığınız gibi çalışmak üzere yapılandırılmıştır. Asıl soru, belirtilen hesaplardan birinin gerçekten gerekli olup olmadığı ve hangisi iş yapıyor?
EvilDr

@EvilDr AD kullanmadığınızı açıkladığınız için teşekkürler. Eh, IIS_IUSRS bir kullanıcı değil, bir grup. IIS 6.0'daki IIS_WPG gibi. IIS_IUSRS ve IUSR ile ilgili bilgileri buradan okuyabilirsiniz: bağlantı . IUSR hesabı için şirket verileri * üzerinde değişiklik izinleri ayarlayabilir ve bu kullanıcıyı IIS_IUSRS grubuna ekleyebilir ve uygulama havuzunuzu altında çalıştırmak için bu kullanıcı hesabını kullanabilirsiniz. Birden fazla IUSR_hesabınız varsa, yalnızca paylaşılan klasörlerde (örneğin TMP) IIS_IUSRS için genel izinlere ihtiyacınız vardır.
Jan Reilink

Jan, IUSR'nin varsayılan olarak IIS_IUSRS grubunun bir parçası olduğunu hep düşünmüşümdür? IUSR hesabı yerleşik bir hesap olduğundan, bunun böyle olup olmadığını nasıl kontrol edebilirsiniz. IIS_USRS için Değiştir'in işaretini kaldırmam ve bunun yerine IUSR için kontrol etmem gerektiğini mi söylüyorsunuz? Tek başvuru şartı göz önüne alındığında bunun gerçekten bir fark yaratacağını düşünmüyorum, değil mi?
EvilDr


0

Belirli bir kullanıcı kullanırım (ve Uygulama kullanıcısı DEĞİL). Daha sonra uygulamada kimliğe bürünmeyi etkinleştireceğim. Bunu yaptığınızda, belirli kullanıcı olarak ayarlanmış hesap ne olursa olsun, bu kimlik bilgileri o sunucudaki yerel kaynaklara erişmek için kullanılır (Dış kaynaklar için değil).

Belirli Kullanıcı ayarı, özellikle yerel kaynaklara erişmek içindir.

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.