Можно ли запустить goroutine или метод go под другим пользователем? - PullRequest
0 голосов
/ 01 июня 2019

Я работаю на небольшом веб-сервере, который обслуживает файлы и предоставляет доступ к домашнему каталогу каждого пользователя.

Если источник должен был находиться в CI, имел возможность ответить на каждый запрос в разных потоках и сделатьуверен, что каждый поток запускается с пользователем вызывающего абонента в качестве его пользователей.

Есть ли какой-нибудь подход к достижению чего-то похожего в Go?В идеале часть кода, которая обрабатывает запрос, программу или вызываемый метод, должна выполняться под учетной записью вызывающего пользователя.

Я провел некоторое исследование, и, похоже, в Go мы можем придерживатьсяотдельная процедура в текущем потоке, но я не вижу, как можно создать новый поток и затем присоединить к этому потоку подпрограмму.

1 Ответ

3 голосов
/ 01 июня 2019

Невозможно запустить процедуру или метод от имени другого пользователя, поскольку они оба работают в том же контексте, что и родительский процесс. Goroutines эквивалентны зеленым потокам и даже не обязательно порождают надлежащие потоки ОС для каждой процедуры.

Этот ответ также может зависеть от ОС, но я не думаю, что это будет работать и для Windows.

если вы запускаете другой процесс через пакет cmd, тогда этот ответ может быть полезен Запуск внешних команд через os / exec под другим пользователем

...