Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Zabezpieczenia systemu Windows umożliwiają kontrolowanie dostępu do nazwanych potoków. Aby uzyskać więcej informacji na temat zabezpieczeń, zobacz Access-Control Model.
Deskryptor zabezpieczeń można określić dla nazwanego potoku podczas wywoływania funkcjiCreateNamedPipe. Deskryptor zabezpieczeń kontroluje dostęp zarówno do końca klienta, jak i serwera nazwanego potoku. Jeśli określisz null, nazwany potok otrzyma domyślny deskryptor zabezpieczeń. Listy ACL w domyślnym deskryptorze zabezpieczeń dla nazwanego potoku zapewniają pełną kontrolę nad kontem LocalSystem, administratorami i właścicielem twórcy. Zapewniają również dostęp do odczytu członkom grupy Wszyscy i anonimowe konto.
Aby pobrać deskryptor zabezpieczeń nazwanego potoku, wywołaj funkcję GetSecurityInfo. Aby zmienić deskryptor zabezpieczeń nazwanego potoku, wywołaj funkcję SetSecurityInfo.
Gdy wątek wywołuje CreateNamedPipe, aby otworzyć dojście na końcu serwera istniejącego nazwanego potoku, system wykonuje kontrolę dostępu przed zwróceniem dojścia. Sprawdzanie dostępu porównuje token dostępu wątku i żądane prawa dostępu względem listy DACL w deskryptorze zabezpieczeń nazwanego potoku. Oprócz żądanych praw dostępu lista DACL musi zezwalać na wywoływany wątek FILE_CREATE_PIPE_INSTANCE dostępu do nazwanego potoku.
Podobnie, gdy klient wywołuje funkcję CreateFile lub CallNamedPipe, aby nawiązać połączenie z końcem nazwanego potoku klienta, system wykonuje kontrolę dostępu przed udzieleniem dostępu do klienta.
Dojście zwrócone przez funkcję CreateNamedPipe zawsze ma dostęp SYNC. Ma również GENERIC_READ, GENERIC_WRITE lub oba, w zależności od trybu otwierania potoku. Poniżej przedstawiono prawa dostępu dla każdego trybu otwierania.
| Tryb otwierania | Prawa dostępu |
|---|---|
| PIPE_ACCESS_DUPLEX (0x00000003) | FILE_GENERIC_READ, FILE_GENERIC_WRITE i SYNCHRONIZUJ |
| PIPE_ACCESS_INBOUND (0x00000001) | FILE_GENERIC_READ i SYNCHRONIZACJA |
| PIPE_ACCESS_OUTBOUND (0x00000002) | FILE_GENERIC_WRITE i SYNCHRONIZACJA |
FILE_GENERIC_READ dostęp do nazwanego potoku łączy prawa do odczytywania danych z potoku, atrybutów potoku odczytu, odczytywania atrybutów rozszerzonych i odczytywania listy DACL potoku.
FILE_GENERIC_WRITE dostęp do nazwanego potoku łączy prawa do zapisywania danych w potoku, dołączania do niego danych, zapisywania atrybutów potoku, zapisywania atrybutów rozszerzonych i odczytywania listy DACL potoku. Ponieważ FILE_APPEND_DATA i FILE_CREATE_PIPE_INSTANCE mają tę samą definicję, dlatego FILE_GENERIC_WRITE umożliwia utworzenie potoku. Aby uniknąć tego problemu, należy użyć praw indywidualnych zamiast używania FILE_GENERIC_WRITE.
Możesz zażądać ACCESS_SYSTEM_SECURITY prawa dostępu do nazwanego obiektu potoku, jeśli chcesz odczytać lub zapisać SACL obiektu. Aby uzyskać więcej informacji, zobacz listAccess-Control list (ACL) i SACL Access Right.
Aby uniemożliwić użytkownikom zdalnym lub użytkownikom w innej sesji usług terminalowych dostęp do nazwanego potoku, użyj identyfikatora SID logowania w daCL potoku. Identyfikator SID logowania jest również używany w logowaniach run-as; jest to identyfikator SID używany do ochrony przestrzeni nazw obiektu sesji. Aby uzyskać więcej informacji, zobacz Uzyskiwanie identyfikatora SID logowania w języku C++.