'setcap' écrase la dernière capacité. Comment définir plusieurs fonctionnalités?

9

Je veux donner à node.js la possibilité d'écouter sur le port 80 et d'arrêter l'ordinateur. Au départ, j'ai essayé ces deux commandes en séquence:

setcap cap_net_bind_service=+ep /usr/bin/nodejs
setcap cap_sys_boot=+ep /usr/bin/nodejs

Ensuite, mon application n'a pas réussi à se lier au port 80. J'ai vérifié avec getcap:

# getcap /usr/bin/nodejs
/usr/bin/nodejs = cap_sys_boot+ep

Si je lance à nouveau setcap pour cap_net_bind_service:

# getcap /usr/bin/nodejs
/usr/bin/nodejs = cap_net_bind_service+ep

Je ne vois rien dans la page de manuel http://linux.die.net/man/8/setcap sur la configuration de plusieurs capacités, et j'essaie certaines choses en désespoir de cause:

# setcap cap_net_bind_service=+ep /usr/bin/nodejs cap_sys_boot=+ep /usr/bin/nodejs
# getcap /usr/bin/nodejs
/usr/bin/nodejs = cap_sys_boot+ep
# setcap cap_net_bind_service=+ep cap_sys_boot=+ep /usr/bin/nodejs
Failed to set capabilities on file `cap_sys_boot=+ep' (No such file or directory)

Comment définir plusieurs fonctionnalités?

Antonius Bloch
la source

Réponses:

17

Et une dernière supposition de syntaxe désespérée porte ses fruits:

# setcap cap_net_bind_service,cap_sys_boot=+ep /usr/bin/nodejs
# getcap /usr/bin/nodejs
/usr/bin/nodejs = cap_net_bind_service,cap_sys_boot+ep
Antonius Bloch
la source
veuillez cocher. Vous avez la bonne réponse.
ctrl-alt-delor