Solution 1 :
afin d'éviter cette erreur, vous pouvez résoudre l'exécutable non-symlink avec which node
, comme exemple complet :
sudo apt-get install libcap2-bin
sudo setcap cap_net_bind_service=+ep `readlink -f \`which node\``
la commande "which" affiche le chemin complet des commandes shell.
Solution 2 :
Deviner. Il s'avère cependant que j'ai installé node, créé un lien symbolique dans /usr/bin/node qui pointait vers un autre lien symbolique dans /etc/alternatives/node qui pointait vers un autre lien symbolique dans /usr/bin/nodejs.
L'exécution de la commande sur /usr/bin/nodejs a fonctionné.
Solution 3 :
FWIW, une autre option consiste à utiliser authbind. Authbind utilise un mécanisme légèrement différent pour atteindre des objectifs similaires à CAP_NET_BIND_SERVICE. C'est à dire. permet aux applications non privilégiées d'utiliser des ports privilégiés.
Installer depuis apt :
sudo apt-get update && sudo apt-get install authbind
En supposant que l'app.js souhaité s'exécute sous l'utilisateur non privilégié "user" et que vous souhaitez vous lier au port 80 :
sudo touch /etc/authbind/byport/80
sudo chown user:user /etc/authbind/byport/80
sudo chmod 500 /etc/authbind/byport/80
Exécutez ensuite votre application comme ceci :
authbind node app.js
Si vous souhaitez plutôt utiliser quelque chose comme "pour toujours" (essentiellement démonise les applications de nœud), alors c'est le bon :
authbind --deep forever app.js