Auf Englisch lesen

Freigeben über


Named Pipe Security and Access Rights

Mit der Windows-Sicherheit können Sie den Zugriff auf benannte Rohre steuern. Weitere Informationen zur Sicherheit finden Sie unter Access-Control Model.

Sie können einen Sicherheitsdeskriptor angeben, für eine benannte Pipe, wenn Sie die CreateNamedPipe-Funktion aufrufen. Der Sicherheitsdeskriptor steuert den Zugriff auf Client- und Serverenden der benannten Pipe. Wenn Sie NULL-angeben, erhält die benannte Pipe einen Standardsicherheitsdeskriptor. Die ACLs im Standardsicherheitsdeskriptor für eine benannte Pipe gewähren dem LocalSystem-Konto, administratoren und dem Erstellerbesitzer voll kontrolle. Außerdem gewähren sie Lesezugriff auf Mitglieder der Gruppe "Jeder" und das anonyme Konto.

Rufen Sie zum Abrufen der Sicherheitsbeschreibung eines benannten Pipes die GetSecurityInfo-Funktion auf. Rufen Sie zum Ändern der Sicherheitsbeschreibung einer benannten Pipe die SetSecurityInfo-Funktion auf.

Wenn ein Thread CreateNamedPipe- aufruft, um ein Handle am Serverende einer vorhandenen benannten Pipe zu öffnen, führt das System eine Zugriffsüberprüfung durch, bevor das Handle zurückgegeben wird. Die Zugriffsüberprüfung vergleicht das Zugriffstoken des Threads und die angeforderten Zugriffsrechte mit der DACL im Sicherheitsdeskriptor der benannten Pipe. Zusätzlich zu den angeforderten Zugriffsrechten muss die DACL den aufrufenden Thread FILE_CREATE_PIPE_INSTANCE Zugriff auf die benannte Pipe zulassen.

Wenn ein Client die CreateFile oder CallNamedPipe-Funktion aufruft, um eine Verbindung mit dem Clientende einer benannten Pipe herzustellen, führt das System eine Zugriffsüberprüfung durch, bevor der Zugriff auf den Client gewährt wird.

Das von der CreateNamedPipe-Funktion zurückgegebene Handle verfügt immer über SYNCHRONIZE-Zugriff. Es hat auch GENERIC_READ, GENERIC_WRITE oder beides, je nach geöffneter Modus des Rohrs. Im Folgenden sind die Zugriffsrechte für jeden geöffneten Modus aufgeführt.

Modus "Öffnen" Zugriffsrechte
PIPE_ACCESS_DUPLEX (0x00000003) FILE_GENERIC_READ, FILE_GENERIC_WRITE und SYNCHRONISIEREN
PIPE_ACCESS_INBOUND (0x00000001) FILE_GENERIC_READ und SYNCHRONISIEREN
PIPE_ACCESS_OUTBOUND (0x00000002) FILE_GENERIC_WRITE und SYNCHRONISIEREN

 

FILE_GENERIC_READ Zugriff auf eine benannte Pfeife kombiniert die Rechte zum Lesen von Daten aus der Pipe, Lese-Pipe-Attribute, Lesezugriff auf erweiterte Attribute und Lesen der DACL der Pipe.

FILE_GENERIC_WRITE Zugriff für eine benannte Pipe kombiniert die Rechte zum Schreiben von Daten in die Pipe, das Anfügen von Daten an sie, das Schreiben von Pipeattributen, das Schreiben erweiterter Attribute und das Lesen der DACL der Pipe. Da FILE_APPEND_DATA und FILE_CREATE_PIPE_INSTANCE dieselbe Definition haben, ermöglicht FILE_GENERIC_WRITE die Berechtigung zum Erstellen der Pipe. Um dieses Problem zu vermeiden, verwenden Sie die individuellen Rechte, anstatt FILE_GENERIC_WRITE zu verwenden.

Sie können den ACCESS_SYSTEM_SECURITY Zugriff auf ein benanntes Pipeobjekt anfordern, wenn Sie die SACL des Objekts lesen oder schreiben möchten. Weitere Informationen finden Sie unter Access-Control Listen (ACLs) und SACL Access Right.

Um zu verhindern, dass Remotebenutzer oder Benutzer in einer anderen Terminaldienstesitzung auf eine benannte Pipe zugreifen, verwenden Sie die Anmelde-SID auf der DACL für die Pipe. Die Anmelde-SID wird auch in "Run-as-Logons" verwendet; es ist die SID, die zum Schutz des Namespaces pro Sitzungsobjekt verwendet wird. Weitere Informationen finden Sie unter Abrufen der ANMELDE-SID in C++-.