web-dev-qa-db-ja.com

「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

Manページに何も表示されません 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)

複数の機能を設定するにはどうすればよいですか?­­­­­­­

9
Antonius Bloch

そして最後の絶望的な構文の推測が報われる:

# 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
17
Antonius Bloch