L'accesso in scrittura a TUTTI funziona, IUSR, IIS_IUSRS, DefaultAppPool non funziona. perché?


10

Ok. Qui stiamo provando a configurare un sito Web ASP classico in IIS 7.5 in Windows Server 2008 R2. Esiste una cartella denominata dbc nella directory principale del sito Web e contiene un file che viene utilizzato per leggere e scrivere determinate informazioni durante l'elaborazione di ogni pagina.

Il problema è che se concedo le autorizzazioni di scrittura IUSR e le autorizzazioni di scrittura IIS_IUSRS o le autorizzazioni di scrittura DefaultAppPool, ottengo il "Accesso al percorso 'E: .. \ websiteroot \ dbc \ nomefile.txt' negato"

Ma se concedo a TUTTI l'accesso in scrittura su quella cartella dbc, allora non ottengo alcun errore, tutto sembra perfetto.

Ulteriori informazioni: Il sito Web funziona in modalità Pipeline classica, l'autenticazione anonima è abilitata (forse è l'unica autenticazione abilitata) .. E ho provato l'autenticazione anonima utilizzando l'account IUSR e l'identità del pool di applicazioni. Nel mio caso, ApplicationPoolIdentity è l'identità per l'autenticazione del sito Web. Usiamo un COM + per l'I / O dei file. E classico ASP Server.CreateObject per creare un'istanza di un oggetto da esso. COM + funziona come un servizio di rete.

Pensieri? Non desidero concedere l'autorizzazione di scrittura a TUTTI. Mi sto perdendo qualcosa?

RISOLTO: Ecco cosa ho fatto.

Il mio sito Web chiamato CipherDemo era in esecuzione con AppPoolIdentity in IIS 7.5, che poteva essere individuato da Identity IIS AppPool \ CipherDemo. Ho usato ICACLS per dare autorizzazioni RW su quella cartella.

e il COM + che stava effettivamente eseguendo il file I / O era in esecuzione con l'identità del servizio di rete. Quando stavo usando Process Monitor per tracciare l'errore di accesso negato, si è scoperto che il servizio di rete ha solo un'autorizzazione di lettura su quella cartella.

Ho usato ICACLS "nome utente" / grant: r "NT AUTHORITY \ NETWORKSERVICE" :( OI) (CI) RXW / T per concedere l'accesso in scrittura su quella cartella.

E risolto.

Avevo l'intenzione che dal momento che il sito Web funziona come CipherDemo Identity, questo sarà l'account che verrà utilizzato per accedere al file tramite COM +. Ma è imbarazzante scoprire che COM + funzionerebbe ancora sui propri confini di identità.

Risposte:


5

In IIS 7.5 (e facoltativamente in IIS 7) tutti i lavoratori funzionano con Identità pool di applicazioni: utente "IIS AppPool * PoolName *".

Concedi l'accesso a quell'utente anziché a Tutti (dovrai digitare il nome nei dialoghi di selezione dell'identità, non verrà visualizzato nella funzione di ricerca).

C'è una pagina molto utile su iis.net che tratta le cose in modo molto più dettagliato.

Nota anche: sotto IIS7 (Server 2008):

  • È possibile impostare l'identità del pool di app in base al pool per app nelle impostazioni avanzate.
  • Non esiste alcun supporto per la GUI, quindi avrai bisogno della riga di comando per impostare le autorizzazioni ( icacls.exe).

Infine, neanche la selezione dell'identità di SQL Server non conosce l'identità del pool di app: utilizzare CREATE LOGINe CREATE USERinizialmente, successivamente, la GUI può essere utilizzata per assegnare ruoli ecc.


@Richard - Sì. Grazie per la pronta risposta. forum msdn sono molto inutili in questi giorni. Ritorna ... Sono stato in giro per due giorni sul sito Web IIS.net e sul serverfault. Uso l'identità predefinita del pool di applicazioni nel mio IIS 7.5 / Win server 2008 R2. E così, ho concesso le autorizzazioni Wite di IIS APPPOOL \ DefaultAppPool sulla mia cartella 'dbc'. Inoltre ho concesso IUSR e IIS_IUSRS autorizzazioni di scrittura su quella cartella. Non funzionerebbe ancora completamente, do a TUTTI i permessi di scrittura. So che c'è qualcosa che mi manca .. Puoi aiutarmi?
gmaran23,

@ gmaran23: se i passaggi ovvi non funzionano, uso Process Monitor per vedere esattamente cosa non funziona (e spesso sarà il file aperto a chiedere troppo accesso, non sono riuscito a impostare correttamente l'ACL o qualcosa del genere altrimenti ha il file aperto).
Richard,

@Richard: eseguo operazioni di lettura / scrittura con un lettore di file in c # con FileMode.Open, FileAccess.ReadWrite. - Immagino che quella parte sia buona. Qualcos'altro ha il file aperto - immagino che questo potrebbe essere escluso, perché non ci sono possibilità .. C'è qualcosa di sbagliato nell'ACL. Lo controllerò e lo pubblicherò qui. Proverà anche Process Monitor. Grazie per l'assistenza :)
gmaran23,

@ gmaran23: se non funziona non dare per scontato che tu sappia qualcosa sempre testare. Ho perso troppo tempo nel corso degli anni perché so che qualcosa era o non era vero - troppo spesso mi sbagliavo.
Richard,

1
@ gmaran23: usa gli strumenti per vedere esattamente cosa sta succedendo: stai indovinando e non stai risolvendo sistematicamente i problemi. (1) Utilizzare Process Explorer per confermare che il file non è aperto. (2) Usa Process Monitor per vedere quale accesso viene richiesto e con quale identità (e hai il file giusto). (3) Ricontrolla il risultato di # 2 rispetto all'ACL sul file (e apri le proprietà di sicurezza avanzate per i dettagli completi). (4) Regola una cosa e vai al numero 1 fino alla correzione. Se sei ancora bloccato dopo alcune iterazioni, espandi la Q con tutti i dettagli (e sii specifico).
Richard,

5

È possibile aggiungere l'account tramite la GUI NTFS digitandolo direttamente. Il nome è nel formato di IIS APPPOOL\<<app pool name>>, ad es IIS APPPOOL\DefaultAppPool. (vedi questo articolo di supporto Microsoft )

Una soluzione alternativa: sto usando l'account "Servizio di rete" come utente del pool di applicazioni concedendogli l'autorizzazione in scrittura.


Corretto, quel suggerimento è buono, ma l'ho già fatto. Uso "ApplicationPoolIdentity" predefinito per il pool di applicazioni. E per la cartella 'dbc' ho già concesso le autorizzazioni di scrittura per IIS AppPool \ DefaultAppPool. Ma continuerebbe a non funzionare finché non do a TUTTI i permessi di scrittura.
gmaran23,

1

Se si desidera concedere l'autorizzazione WRITE alla cartella per l'utente specifico, è necessario modificare anche "Identità utente anonimo" del sito in "Utente specifico", non "Identità pool di applicazioni".

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.