diff --git a/docs/manual.md b/docs/manual.md index ffa2305..7b45225 100644 --- a/docs/manual.md +++ b/docs/manual.md @@ -634,6 +634,27 @@ nfqws2 <глобальные_параметры> В остальных системах нужно копаться в powershell или лезть в реестр, чтобы раскидать подключения по нужным GUID, если вдруг они раскидались системой неправильно. Но можно и не бороться, а просто внести список GUID, назначенных системой автоматически. +## Песочница + +В целях безопасности nfqws2 после инициализации сбрасывает свои привилегии. +Весб LUA код выполняется только после сброса привилегий. Он никогда не получает исходные права. + +BSD : +* Меняется UID/GID на указанные в параметрах `--user`, `--uid` + +Linux : +* Меняется UID/GID на указанные в параметрах `--user`, `--uid` +* Включается seccomp фильтр, запрещающий exec и ряд файловых операций - чтение содержимого каталогов, создание/удаление каталогов, создание специальных файлов (линки, девайсы), посылание сигналов (kill), ptrace. +В случае нарушения процесс аварийно завершается. + +Windows : +* Хотя драйвер windivert требует привилегий администратора, после его инициализации процесс winws2 ставит себе low mandatory level. +Это предотвращает доступ на запись практически ко всем файлам и обьектам, защищенным security descriptor. + +Есть простой способ передать LUA коду каталог, доступный на запись - параметр `--writeable[=]`. +nfqws создает каталог, назначает на него такие права, чтобы LUA код смог писать туда файлы, передает имя директории в переменной env `WRITEABLE`. +Если dirname не задан, на Windows создается каталог внутри `%USERPROFILE%/AppData/LocalLow` + ## Вызов LUA кода LUA код вызывается в 2 этапа.