2009-03-27 12 views
2

J'essaie de connecter un processus CGI à mon service Windows avec un canal nommé. Mon code s'exécute correctement en utilisant un autre serveur sur mon ordinateur de développement, mais sur IIS il y a des problèmes de sécurité lorsque j'appelle CreateFile() dans le processus CGI. Le service Windows est le serveur de canaux nommés. Par conséquent, le processus CGI tente de se connecter à ce canal nommé en tant que client.Windows ACL Named-Pipe sous IIS

J'ai déterré un code qui crée un descripteur de sécurité globale avec le drapeau SECURITY_WORLD_SID_AUTHORITY en appelant:

InitializeAcl() 
    AddAccessAllowedAce() 
    SetSecurityDescriptorDacl() 

Mais je ne comprends pas vraiment le concept. Je suppose que le serveur Pipe CreateNamedPipe() doit être appelé avec cette ACL dans la structure SECURITY_ATTRIBUTES mais qu'en est-il du client Pipe nommé? Est-ce que je crée un autre descripteur de sécurité global et appelle CreateFile() avec cela?

Est-ce que je posséderai avec

SecurityAttributes.bInheritHandle = TRUE; 

Est-ce que je viens de passer Null dans le CreateFile() appeler?

+0

Il serait utile de savoir à quel compte le processus CGI est exécuté. – Murray

+0

Eh bien, j'ai laissé cela parce que j'ai l'intention de changer cela. Actuellement, il s'agit d'un compte d'utilisateur avec des privilèges d'administration, mais pourrait éventuellement être IUSER –

Répondre

1

Étant donné que le canal est créé par le serveur, seul le serveur doit spécifier la liste de contrôle d'accès, le client utilise la valeur NULL pour la liste de contrôle d'accès. L'héritage s'applique uniquement si le canal nommé est créé dans un processus et que processus crée un nouveau processus dans lequel vous souhaitez que le processus généré ait un accès direct au handle (il ne rouvre pas le handle, mais il obtient le valeur d'une autre manière, comme une ligne de commande).

Vous pouvez utiliser l'Explorateur de processus sur sysinternals pour afficher les canaux nommés ouverts dans un processus, puis consulter la liste de contrôle d'accès.

+0

Comment "afficher les tubes nommés"? Et aussi, comment regardez-vous l'ACL? – codea

+0

Les "canaux nommés" sont simplement des fichiers dans un système de fichiers spécial. Ils ont le type de fichier HANDLE. Process Explorer par défaut affiche toutes les poignées de votre processus. – MSalters

Questions connexes