'setcap' перезаписывает последнюю возможность. Как мне установить несколько возможностей?

9

Я хочу дать node.js возможность прослушивать порт 80 и выключать компьютер. Первоначально я попробовал эти две команды в последовательности:

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

Тогда моему приложению не удалось привязаться к порту 80. Я проверил с помощью getcap:

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

Если я снова запустил setcap для cap_net_bind_service:

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

На странице руководства http://linux.die.net/man/8/setcap я ничего не вижу о настройке нескольких возможностей и в отчаянии пытаюсь кое-что попробовать:

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

Как мне установить несколько возможностей?

Антоний Блох
источник

Ответы:

17

И последнее отчаянное предположение о синтаксисе окупается:

# 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
Антоний Блох
источник
пожалуйста, отметьте. У вас правильный ответ.
Ctrl-Alt-Delor