CodeS-SourceS
Rechercher un code, un tuto, une réponse

[asp/asp.net][general] ecriture dans des fichiers, bases de données : les autorisations d'écriture dans des dossiers

Décembre 2017


Lecture & Écriture en ASP / ASP.NET : Une erreur courante



Introduction


Voilà un petit tutorial pour ASP3 et ASP.NET sur les utilisateurs Windows à autoriser pour pouvoir écrire dans un fichier ou un dossier. Cela explique également comment résoudre certaines erreurs comme "Vous devez utiliser une requête qui peut être mise à jour" et d'autres erreurs dues aux droits d'écriture sur les fichiers.

Principe Général


Partons avec quelques notions de base :


Lorsqu'un poste client se connecte à un site hébergé sur IIS, il est associé au compte d'utilisateur anonyme d'IIS qui est normalement nommé IUSR_NOMDUSERVEUR. Toutes les opérations faites par les pages vues par ce "client" s'exécutent dans le processus d'IIS mais pour Windows, l'utilisateur qui effectue ces opérations s'appelle toujours IUSR_NOMDUSERVEUR. Le reste des opérations effectuées par IIS (autres qu'exécuter des pages web) sont représentés dans Windows par l'utilisateur IWAM_NOMDUSERVEUR.


Voilà qui devrait suffire...

Pour l'ASP, L'accès aux fichiers et dossiers


L'ASP est exécuté sous forme d'une "application" ISAPI par IIS. Donc toutes les pages ASP qui sont sur le serveur sont exécutées par IUSR_NOMDUSERVEUR. C'est là que ça devient intéressant : Dès qu'il s'agit de lire ou d'écrire dans un répertoire, c'est IUSR_NOMDUSERVEUR qui le fait !! Donc si une de vos pages ASP utilise le FSO pour écrire dans un fichier : c'est IUSR_NOMDUSERVEUR qui doit pouvoir le faire, sinon vous aurez droit à une belle erreur. Pareil pour écrire dans une base Access: c'est IUSR_NOMDUSERVEUR qui le fait à la place de vos pages.

Donc pour pouvoir écrire dans un fichier, une base de données, pour pouvoir créer un répertoire ou des dossiers, il faut :
  • Sélectionner le dossier ou le fichier que vous voulez autoriser.
  • Faire Clique Droit, "Propriétés", puis aller dans l'onglet "Sécurité" (les autorisations de fichiers simples doivent être désactivées)
  • Ajouter IUSR_NOMDUSERVEUR aux utilisateurs, avec les droits que vous voulez accorder à vos pages ASP.

Pour l'ASP.NET, L'accès aux fichiers et dossiers


L'ASP.NET est compilé et interprété par le Framework .Net. Celui-ci est représenté auprès du système d'exploitation par l'utilisateur ASPNET (sans le point entre les deux !) ou l'utilisateur "Services Réseaux" sous Windows 2003. Donc, dès qu'il s'agit de lire ou d'écrire dans un répertoire, c'est ASPNET qui le fait !! Donc si vos pages écrivent à un moment dans un fichier XML ou dans une base Access par exemple, c'est ASPNET qui doit pouvoir le faire, sinon vous aurez droit à une belle erreur !!

Donc pour pouvoir écrire dans un fichier, une base de données, pour pouvoir créer un répertoire ou des dossiers, il faut :
  • Sélectionner le dossier ou le fichier que vous voulez autoriser.
  • Faire Clique Droit, "Propriétés", puis aller dans l'onglet "Sécurité" (les autorisations de fichiers simples doivent être désactivées)
  • Ajouter ASPNET aux utilisateurs, avec les droits que vous voulez accorder à vos pages ASP.NET sur ce dossier ou fichier.



J'ai juste fait ce petit tutorial pour éviter de répondre toutes les semaines aux mêmes questions sur des problèmes d'écriture de fichiers...Et puis dans l'espoir que ça puisse servir à quelqu'un ! :)

Nurgle
http://nurgle.blogspot.com
Publié par cs_Nurgle.
Ce document intitulé «  [asp/asp.net][general] ecriture dans des fichiers, bases de données : les autorisations d'écriture dans des dossiers  » issu de CodeS-SourceS (codes-sources.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
[asp.net] [general] comment écrire avec asp.net ?
Le menu de codes-sources en asp.net 2