'setcap' überschreibt die letzte Funktion. Wie stelle ich mehrere Funktionen ein?

9

Ich möchte node.js die Möglichkeit geben, Port 80 abzuhören und den Computer herunterzufahren. Anfangs habe ich diese beiden Befehle nacheinander ausprobiert:

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

Dann konnte meine App nicht an Port 80 gebunden werden. Ich überprüfte mit getcap:

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

Wenn ich setcap erneut für cap_net_bind_service ausführe:

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

Ich sehe auf der Manpage http://linux.die.net/man/8/setcap nichts über das Festlegen mehrerer Funktionen und probiere einige Dinge verzweifelt aus:

# 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)

Wie stelle ich mehrere Funktionen ein?

Antonius Bloch
quelle

Antworten:

17

Und eine letzte verzweifelte Syntax-Vermutung zahlt sich aus:

# 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
quelle
Bitte ankreuzen. Sie haben die richtige Antwort.
Strg-Alt-Delor