Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
La sécurité Windows vous permet de contrôler l’accès aux canaux nommés. Pour plus d’informations sur la sécurité, consultez Access-Control Modèle.
Vous pouvez spécifier un descripteur de sécurité pour un canal nommé lorsque vous appelez la fonction CreateNamedPipe. Le descripteur de sécurité contrôle l’accès aux extrémités client et serveur du canal nommé. Si vous spécifiez NULL, le canal nommé obtient un descripteur de sécurité par défaut. Les listes de contrôle d’accès dans le descripteur de sécurité par défaut pour un canal nommé accordent un contrôle total au compte LocalSystem, aux administrateurs et au propriétaire du créateur. Ils accordent également l’accès en lecture aux membres du groupe Tout le monde et au compte anonyme.
Pour récupérer le descripteur de sécurité d’un canal nommé, appelez la fonction GetSecurityInfo. Pour modifier le descripteur de sécurité d’un canal nommé, appelez la fonction SetSecurityInfo.
Lorsqu’un thread appelle CreateNamedPipe pour ouvrir un handle à la fin du serveur d’un canal nommé existant, le système effectue une vérification d’accès avant de retourner le handle. La vérification d’accès compare le jeton d’accès du thread et les droits d’accès demandés par rapport à la liste de contrôle d’accès dans le descripteur de sécurité du canal nommé. Outre les droits d’accès demandés, la liste de contrôle d’accès doit autoriser le thread appelant FILE_CREATE_PIPE_INSTANCE l’accès au canal nommé.
De même, lorsqu’un client appelle la fonctionCreateFileou CallNamedPipe pour se connecter à la fin du client d’un canal nommé, le système effectue une vérification d’accès avant d’accorder l’accès au client.
Le handle retourné par la fonction CreateNamedPipe a toujours accès à SYNCHRONIZE. Il a également GENERIC_READ, GENERIC_WRITE, ou les deux, selon le mode ouvert du canal. Voici les droits d’accès pour chaque mode ouvert.
Mode d’ouverture | Droits d’accès |
---|---|
PIPE_ACCESS_DUPLEX (0x00000003) | FILE_GENERIC_READ, FILE_GENERIC_WRITE et SYNCHRONIZE |
PIPE_ACCESS_INBOUND (0x00000001) | FILE_GENERIC_READ et SYNCHRONIZE |
PIPE_ACCESS_OUTBOUND (0x00000002) | FILE_GENERIC_WRITE et SYNCHRONIZE |
FILE_GENERIC_READ’accès pour un canal nommé combine les droits de lecture des données à partir du canal, de lecture des attributs de canal, de lecture d’attributs étendus et de lecture de la liste daCL du canal.
FILE_GENERIC_WRITE l’accès pour un canal nommé combine les droits d’écriture de données dans le canal, d’ajouter des données, d’y écrire des attributs de canal, d’écrire des attributs étendus et de lire la liste DACL du canal. Étant donné que FILE_APPEND_DATA et FILE_CREATE_PIPE_INSTANCE ont la même définition, FILE_GENERIC_WRITE autorise la création du canal. Pour éviter ce problème, utilisez les droits individuels au lieu d’utiliser FILE_GENERIC_WRITE.
Vous pouvez demander au ACCESS_SYSTEM_SECURITY droit d’accès à un objet de canal nommé si vous souhaitez lire ou écrire la saCL de l’objet. Pour plus d’informations, consultez Access-Control listes de contrôle d’accès (ACL) et accès SACL Right.
Pour empêcher les utilisateurs distants ou les utilisateurs d’une autre session de services terminal d’accéder à un canal nommé, utilisez le SID d’ouverture de session sur la liste DACL pour le canal. Le SID d’ouverture de session est également utilisé dans les journaux d’exécution ; il s’agit du SID utilisé pour protéger l’espace de noms d’objet par session. Pour plus d’informations, consultez Obtention du SID d’ouverture de session en C++.