Большинство переменных окружения сбрасываются при использовании sudo по соображениям безопасности. Таким образом, вы не можете передать эту переменную среды на узел, не изменив файл sudoers, чтобы разрешить этой переменной проходить.
Однако, вы все равно не должны запускать узел как root Итак, вот хороший обходной путь:
Если вам просто нужен порт 80, запустите узел на непривилегированном порту и настройте пересылку iptables для сопоставления порта 80 с этим портом:
iptables -A PREROUTING -d 1.2.3.4/32 -i eth0 -p tcp -m tcp --dport 80 -j DNAT --to-destination 2.3.4.5:1234
Замените 1.2.3.4 на ваш общедоступный IP, 2.3.4.5, если запущен узел IP (может быть общедоступным или 127.0.0.1), и 1234, если запущен узел порта.
С достаточно новым ядром, которое поддерживает возможности, вы также можете предоставить исполняемому файлу node
привилегию CAP_NET_BIND_SERVICE
, используя в качестве пользователя root следующую команду:
setcap 'cap_net_bind_service=+ep' /usr/bin/node
Обратите внимание, что это позволит любому пользователю в вашей системе открывать привилегированные порты, используя узел!