Как заставить программу работать с повышенными привилегиями, но не с правами root?

Подсистема Windows для Linux (WSL )— это просто уровень совместимости для запуска бинарных исполняемых файлов Linux в Windows. Он не предоставляет почти никакой функциональности, кроме этого. Особенно в вашем случае вы столкнулись с двумя неподдерживаемыми компонентами/функциями:

Уровни выполнения

WSL не работает как отдельный экземпляр операционной системы, поэтому не существует простого способа поддержки систем начальной загрузки и управления службами, таких как initили systemd, поскольку они присутствуют в реальных системах Linux. Следовательно, сегодня (2019 -02 )Ubuntu для WSL по-прежнему не поддерживает уровни выполнения.

Ядро Linux

Это основное ограничение в вашем случае. VirtualBox как гипервизор должен интегрироваться с ядром операционной системы (с помощью модулей ядра ). WSL — это просто уровень совместимости. Настоящего Linux не работает (нет ядра Linux ). Следовательно, VirtualBox не может скомпилировать свои модули ядра для WSL.

Если вы хотите запустить VirtualBox на компьютере с Windows, установите версию для Windows. Вы не можете запустить версию для Linux в WSL.

0
19.08.2020, 15:10
2 ответа

Вы используете привилегированный порт. Только rootможет прослушивать порты ниже 1024. Вот почему, например. apache запускается какroot(и остается ), а рабочие запускаются как www-dataили что-то еще.

Попробуйте использовать порт выше 1023.

2
18.03.2021, 23:11

Вы можете использовать эту команду для запуска PHP под любым портом:

setcap -v cap_net_bind_service=+ep "$(readlink -f "$(which php)")"

Если он возвращает :/usr/bin/binary differs in [pe](, это ошибка ), сначала запустите его без аргумента -v.

1
18.03.2021, 23:11

Теги

Похожие вопросы