GNU/Linux >> Znalost Linux >  >> Linux

Povolení spouštění aplikací node.js na portu 80

Ř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

Linux
  1. Aplikaci Node.js nelze spustit na portu 80, i když port neblokuje žádný jiný proces

  2. Jak zkontrolovat, zda mám sudo přístup?

  3. Povolení FTP s IPTables

  1. Spusťte kontejnery na Linuxu bez sudo v Podman

  2. Použití sudo k delegování oprávnění v Linuxu

  3. Jak otevřít port 80 a 443 ve FirewallD

  1. Linux – Spouštět aplikace Mac OS X na Linuxu?

  2. Pamatujete si aplikace při odhlášení z Lxde?

  3. Konflikty Node.js:/sbin/node vs /usr/bin/node?