'setcap' substitui o último recurso. Como defino vários recursos?

9

Quero dar ao node.js a capacidade de escutar na porta 80 e desligar o computador. Inicialmente, tentei esses dois comandos em sequência:

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

Em seguida, meu aplicativo falhou na ligação à porta 80. Verifiquei com o getcap:

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

Se eu executar o setcap novamente para cap_net_bind_service:

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

Não vejo nada na página de manual http://linux.die.net/man/8/setcap sobre como definir vários recursos e tento algumas coisas em desespero:

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

Como defino vários recursos?

Antonius Bloch
fonte

Respostas:

17

E um último palpite desesperado de sintaxe compensa:

# 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
fonte
marque. Você tem a resposta correta.
ctrl-alt-Delor