J'utilise IIS 7 sur Windows Server 2008 R2 avec PHP 5.4. Un de mes scripts PHP tente d'accéder à un fichier sur un partage réseau protégé à l'aide d'un chemin UNC. Comment modifier le compte de service IIS en un compte autorisé à accéder au partage? C'est vraiment facile à faire sur le serveur HTTP Apache (il suffit de le changer), mais on ne sait pas comment faire avec IIS. Que puis-je faire?
Mettre à jour:
Je pouvais faire fonctionner les choses en utilisant l'option "Se connecter en tant que" dans les "Paramètres de base" de mon site Web, puis en spécifiant un compte ayant accès au partage réseau. C’est apparaît que mon problème est lié à cette question:
Pour IIS 7 sous Windows Server 2008 R2 ... Dans le IIS Manager
, sélectionnez le Application Pool
sous lequel votre site Web est en cours d'exécution.
Cliquez sur "Paramètres avancés". Il y aura une entrée pour Identity
(elle se trouve sous la section Process Model
). Cliquez dessus, fournissez les informations d'identification de votre compte qui est autorisé à accéder au partage.
METTRE À JOUR
Assurez-vous que si vous utilisez un compte de domaine Active Directory, vous l'avez correctement indiqué sous Identity
pour le pool d'applications en cours d'exécution. Par exemple, MYDOMAIN\myAccount
.
Après avoir effectué ce changement, vous devrez procéder comme suit:
MISE À JOUR II
De la discussion sur cette réponse, @HydroPowerDeveloper a pu obtenir le script PHP pour pouvoir accéder au partage réseau via le chemin UNC à l'aide de WebSite -> Paramètres de base -> "Se connecter en tant que" et y définir les informations d'identification.
Dans le passé, j’avais toujours utilisé la méthode consistant à définir Identity
via Application Pool
, ce qui a permis à mon code d’accéder aux partages réseau via le chemin UNC.
Cependant, tous les sites/applications que j'ai déployés sur IIS
sont des sites WCF ou ASPX basés sur .NET.
Je spéculerais (mais je ne suis pas tout à fait sûr à ce sujet, il faudrait des recherches/des tests pour confirmer) que la Identity
spécifiée dans le Application Pool
est utilisée en exécutant du code .NET, alors que le "Connecter en tant que" est utilisé par le PHP script.
Généralement, le pool d'applications est défini en utilisant le moins de privilèges possible.
http://msdn.Microsoft.com/en-us/library/ff647402.aspx
L'itinéraire le plus simple consiste à autoriser l'accès au compte IIS actuel.
Dans l'explorateur, accédez au répertoire partagé.
Clic droit -> Propriétés -> Sécurité
Si l'utilisateur IIS attendu ne figure pas dans la liste (noms de groupe ou d'utilisateur), modifiez-le et ajoutez-le selon vos besoins.
J'ai utilisé "SERVICE RÉSEAU" -> Vérifier les noms.
Les instructions détaillées sont sur ce site.
De cette manière, le système est toujours restreint, nous ne permettons UNIQUEMENT que l'accès à des répertoires spécifiques, nous n'avons pas besoin de créer de nouveaux utilisateurs, nous n'avons pas besoin de recycler le pool d'applications ni de procéder code d'emprunt d'identité astucieux.
Pour ressusciter une vieille question ...
Je viens de mettre en place un serveur Win 2016 qui utilise du Perl pour accéder à un partage UNC. J'ai défini le pool d'applications sur un compte que j'ai vérifié disposer des autorisations appropriées sur ce partage. J'ai ensuite configuré mon site pour "Connecter en tant que ..." (sous "Paramètres de base") avec le même utilisateur. Je ne pouvais toujours pas obtenir un accès de travail.
Beaucoup plus tard, je me suis rendu compte que mon «répertoire virtuel», cgi-bin, fonctionnait sous le compte «pass through» d'origine. J'ai ensuite configuré le répertoire virtuel sur "Connecter en tant que ..." au même compte que le site et le pool d'applications et, bingo, tout fonctionne correctement.
Alors, n'oubliez pas de mettre à jour tous les répertoires virtuels, ainsi que le site et le pool d'applications ...