Řešení 1:
abyste se této chybě vyhnuli, můžete spustitelný soubor bez symbolového odkazu vyřešit pomocí which node
, jako úplný příklad:
sudo apt-get install libcap2-bin
sudo setcap cap_net_bind_service=+ep `readlink -f \`which node\``
příkaz "which" ukazuje úplnou cestu příkazů shellu.
Řešení 2:
Vyřešil to. Ukázalo se však, že jsem nainstaloval uzel, vytvořil jsem symbolický odkaz v /usr/bin/node, který ukazoval na jiný symbolický odkaz v /etc/alternatives/node, který ukazoval na jiný symbolický odkaz v /usr/bin/nodejs.
Spuštění příkazu proti /usr/bin/nodejs fungovalo.
Řešení 3:
FWIW, další možností je použít authbind. Authbind používá mírně odlišný mechanismus k dosažení podobných cílů jako CAP_NET_BIND_SERVICE. Tj. umožňuje neprivilegovaným aplikacím používat privilegované porty.
Instalovat z apt:
sudo apt-get update && sudo apt-get install authbind
Za předpokladu, že požadovaná app.js běží pod neprivilegovaným uživatelem „user“ a chcete se vázat na port 80:
sudo touch /etc/authbind/byport/80
sudo chown user:user /etc/authbind/byport/80
sudo chmod 500 /etc/authbind/byport/80
Poté spusťte aplikaci takto:
authbind node app.js
Pokud místo toho chcete používat něco jako „navždy“ (v podstatě démonizuje aplikace uzlů), pak je to správné:
authbind --deep forever app.js