「setcap」は最後の関数をオーバーライドします。複数の機能を設定するには?

「setcap」は最後の関数をオーバーライドします。複数の機能を設定するには?

Node.jsがポート80でリッスンしてコンピュータをシャットダウンするようにしたいと思います。最初は、次の2つのコマンドを順番に試しました。

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

cap_net_bind_serviceに対してsetcapを再実行すると、次のようになります。

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

複数の機能を設定するには?

ベストアンサー1

最後の切迫した構文の推測が成果を上げました。

# 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

おすすめ記事