Come mai quando aggiungo l'accesso IIS_IUSRS RW a una cartella, non consente automaticamente l'accesso ISUR RW?


11

Sto utilizzando IIS7 (Windows Server 2008 x64) e ho una configurazione del sito Web che utilizza l'autenticazione anonima. L'identità dell'utente anon è configurata come IUSR. L'applicazione scrive i file in una cartella e concedo le autorizzazioni RW del gruppo IIS_IUSRS alla cartella. Questo non funziona Devo fornire esplicitamente i permessi IUSR RW per consentire all'applicazione di scrivere nella cartella.

Comprendo che l'identità del pool di applicazioni viene aggiunta automaticamente al gruppo IIS_IUSRS. Supponevo che anche IUSR (o qualsiasi identità utente anonima) fosse un membro implicito del gruppo IIS_IUSRS. Non sembra che sia così.

Durante la risoluzione dei problemi, utilizzo Process Monitor per visualizzare l'accesso alla cartella e ho determinato che il servizio di rete (l'identità del pool di applicazioni) sta impersonando IUSR (questo è quello che mi aspettavo), ma dare permessi RW al gruppo IIS_IUSRS non ha permesso a IUSR di accedere al accesso al file negato).

Qualcuno può spiegare se IUSR è o non è un membro del gruppo IIS_IUSRS?

Ho esaminato la seguente documentazione e non ho trovato una risposta solida:

Comprensione degli account utente e di gruppo incorporati in IIS 7

Identità del pool di applicazioni

Risposte:


14

Questo perché sono due cose diverse. IIS_IUSRS è il gruppo per gli account dei processi di lavoro IIS . Ciò significa che l'identità con cui viene eseguito il pool di applicazioni stesso. IUSR è l'identità dell'utente anonimo. Ciò significa che l'identità che IIS ritiene essere l'utente che accede al sito.

Ora, anche se non l'hai detto, fammi indovinare - questa app è asp classica? (Altrimenti, se è .Net, allora devi usare la rappresentazione). Ad ogni modo, ciò che accade è che le risorse sono accessibili come identità impersonata, ovvero l'utente anonimo nel tuo caso, che significa IUSR. Ecco perché devi concedergli i diritti. In .Net, se disattivi la rappresentazione, scoprirai che IIS_IUSRS entrerà in gioco come ti aspetti. In ASP classico (e per file statici), non hai scelta, la rappresentazione è sempre "abilitata"; quindi è sempre l'identità dell'utente utilizzata, non l'identità del pool. Quindi poiché IIS_IUSRS è per le identità del pool, non è in gioco.


Modifica dopo OP ha aggiunto ulteriori informazioni:

È facile confondere IUSR e IIS_IUSRS a causa dei loro nomi. Per vedere che sono diversi è ricordare che IIS_IUSRS è un sostituto di IIS_WPG in IIS6, che era il gruppo di processi di lavoro. A questi gruppi si aggiungono account in cui si desidera eseguire i propri pool, non altre identità, ma i privilegi anonimi dovrebbero essere più limitati. per esempio. a volte potresti voler usare un account di dominio per eseguire il pool per la delega Kerberos ad altre risorse di rete. Quindi aggiungere l'account del servizio a questo gruppo.

Quando la rappresentazione è abilitata, il pool / processo finge di essere l'utente perché gli è stato detto. In caso di anon auth (il tuo caso), quell'utente è IUSR. In caso di autenticazione di Windows, sarebbe l'identità windows \ domain dell'utente. Questo è anche il motivo per cui si ottiene un impatto sulle prestazioni con la rappresentazione, perché il processo deve passare a un'identità diversa per l'accesso alle risorse.

Se stai utilizzando .NET e l'autenticazione anonima, non vedo perché dovresti abilitare la rappresentazione. Nel caso in cui non si utilizzi o non sia necessaria la rappresentazione, è necessario essere consapevoli di alcuni altri trucchi nel caso di IIS7: è possibile far scomparire completamente il proprio IUSR e porre fine alla confusione. Penso che ti piacerebbe, ed è anche il mio metodo preferito. Tutto quello che devi fare è dirgli di riutilizzare l'identità del pool come identità anonima .

Quindi dopo questo dovrai solo occuparti del gruppo IIS_IUSRS. Ma non ti confondere, questo non significa ancora che questi due siano gli stessi! Potrebbe essere possibile che l'identità del processo sostituisca IUSR, ma non viceversa!

Qualche altro trucco di IIS7 da tenere presente: se guardi IIS_IUSRS, potrebbe essere vuoto. Questo perché le identità del pool virtuale vengono aggiunte automaticamente all'avvio del pool, quindi non devi preoccuparti di queste cose.

Questa tabella dovrebbe aiutare a chiarire meglio come viene determinata l'identità di esecuzione del thread:

Rappresentazione Risorse di accesso anonime accessibili come

Abilitato Abilitato IUSR_computer in IIS5 / 6 o,
                                       IUSR in IIS7 o,
                                       Se hai cambiato l'account utente anon 
                                       in IIS, qualunque cosa tu abbia impostato lì
Abilitato Disabilitato MYDOM \ MyName
Autorizzazione NT abilitata disabilitata \ Servizio di rete (identità del pool)
Disabilitato Disabilitato Autorità NT \ Servizio di rete (identità del pool)


Stiamo sicuramente usando .Net (3.5 target) ma potrebbe essere usando la rappresentazione. Dovrò verificare con i miei sviluppatori per essere sicuro. La mia confusione deriva dal fatto che ho assunto (erroneamente) che l'identità dell'utente anonimo fosse automaticamente un membro del gruppo IIS_IUSRS. Dal momento che non lo è, mi permetta di chiarire e per favore correggimi se sono sfinito.

1) Utilizzando l'ASP classico, le autorizzazioni di accesso ai file utilizzano l'identità dell'utente anonimo. In IIS 7 o versioni successive, questo utente non è un membro del gruppo IIS_IUSRS per impostazione predefinita. 2) Utilizzando ASP.Net, le autorizzazioni di accesso ai file utilizzano l'identità dell'utente anonimo se la rappresentazione è abilitata. In IIS 7 o versioni successive, questo utente non è un membro del gruppo IIS_IUSRS per impostazione predefinita. 3) Utilizzando ASP.Net, le autorizzazioni di accesso ai file utilizzano l'identità del processo di lavoro se la rappresentazione è disabilitata. In IIS 7 o versioni successive, questo utente è sempre un membro del gruppo IIS_IUSRS per impostazione predefinita.

Sì assolutamente corretto su tutti i punti! Per essere perfettamente chiari, in # 1 e # 2 dovresti aggiungere "se IIS anon auth è abilitato", che non ho dovuto includere in precedenza perché hai già detto che stai usando anon. Vedi la tabella che ho aggiunto per spiegarlo meglio.
Amit Naidu,

Grazie mille per aver chiarito questo. È d'accordo con quello che ho trovato attraverso tentativi ed errori, ma non ho visto questo documentato in modo molto chiaro da nessuna parte. È fondamentale per gli amministratori che impiegano LUA sui loro server quando configurano applicazioni IIS che necessitano dell'autorizzazione in scrittura.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.