2010-09-25 10 views
8

piszę coś podobnego do http://ideone.com/. Obecnie uruchamiam procesy użytkownika za pomocą wywołania CreateProcess. Zabijam proces, jeśli działa on dłużej niż określony czas, ale nie wiem, jak odmówić prawa do odczytu/zapisu systemu plików/tworzenia praw procesowych itp. Do utworzonego procesu. Dany plik wykonywalny może być dosłownie wszystkim i muszę zezwolić tylko na stdin/stdout. Byłoby świetnie, gdybym mógł ustawić zestaw pamięci roboczej.Prowadzenie procesu z najniższych możliwych przywilejów w WinAPI

Przeczytałem wiele artykułów na temat msdn, takich jak CreateProcessAsUser Function, CreateProcessWithLogonW Function itp. Ale bardzo szybko się mylę (prawdopodobnie dlatego, że moja wiedza na temat win32 jest bardzo ograniczona). Czy wystarczy zadzwonić do CreateProcessAsUser i utworzyć specjalnego użytkownika z tymi ograniczonymi uprawnieniami (i jak utworzyć takiego użytkownika).

Mam nadzieję, że można to osiągnąć w jednym wywołaniu funkcji z odpowiednich parametrach więc proszę o pomoc.

Również, jeśli wiesz, trochę podobny projekt open source byłoby wspaniale.

Dzięki.

============================================== ============

Edytuj: Cześć jeszcze raz :) Nadal jestem z tym skazany. Nie miałem wystarczająco dużo czasu, aby pracować nad tym, ale domyślam się, że snemarch post jest bardzo użyteczny. Jeśli ktoś ma gotowe rozwiązanie, byłoby wspaniale. Będę pisać, jeśli coś zrobię z linkami snemarcha.

+0

vmware instumentation to nie wchodzi w rachubę? lub jakiś inny produkt vm? –

+0

nie, nie jest wykluczone, ale chciałbym trzymać się api, jeśli to możliwe. Jestem otwarty na wszelkie sugestie. – Klark

Odpowiedz

5

Rozważmy uruchomiony proces obsługi wewnątrz job object. Procesy potomne utworzone przez proces użytkownika trafią również do tego samego obiektu zadania. Możesz zastosować określone ograniczenia określające ilość zasobów, z których zadanie może korzystać, jak może współdziałać z GUI itp. (Patrz funkcja SetInformationJobObject). Możesz zabić wszystkie procesy w obiekcie zadania jednym cięciem.

3

Mamy kawałek kodu dla tej operacji, choć nie można zakładać go :(

Tworzenie „zastrzeżone” tokenu dostępu w oparciu o token dostępu dla tego procesu. Następnie należy utworzyć nowy sposób . Aplikacja z tymi token dostępu

Gdyby komentarz z kodem - więcej informacji można znaleźć w artykule MSDN nazwie, "Browsing the Web and Reading E-mail safely as an Administrator". jednak jak zwykle MS złamał wstęgę i wyrób nie jest dłużej

.

Skojarzone wyszukiwania znalazły aplikację "DropMyRights" połączoną pod numerem blog linking to this article, która może zrobić to, co robisz ant, oferuje źródło, ale znowu te linki zostały zerwane na stronie bloga.

może warto spojrzeć na funkcje jak OpenProcessToken GetTokenInformation CreateRestrictedToken

i privs jak SE_CHANGE_NOTIFY_NAME

Powiązane problemy