capshの使用方法:最小限の機能で特権のないpingを実行しようとしています
Debian Gnu / Linuxで機能を試しています。 / bin / pingを現在の作業ディレクトリにコピーしました。予想通り動作しませんが、元々はsetuidルートでした。 次に、を実行してpingに最小限の機能(rootではない)を付与し、pingは正常に機能しsudo /sbin/setcap cap_net_raw=ep ./pingます。 次にsudo /sbin/setcap -r ./ping、その機能を無効にします。現在、期待どおりに動作していません。 を使用してpingを動作させようとしていますcapsh。 capsh には特権がないため、rootとして実行する必要がありますが、rootを削除して、他のすべての特権を削除します。 私も必要だと思いますがsecure-keep-caps、これはに記載されていませんcapshが、機能マニュアルに記載されています。からビット番号を取得しました/usr/include/linux/securebits.h。の出力--printはこれらのビットが正しいことを示しているため、それらは正しいように見えます。 私は何時間もいじっていましたが、これまでのところこれがあります。 sudo /sbin/capsh --keep=1 --secbits=0x10 --caps="cap_net_raw+epi" == --secbits=0x10 --user=${USER} --print -- -c "./ping localhost" ただし、のpingエラーping: icmp open socket: Operation not permittedは、機能がない場合に発生することです。また--print番組ではCurrent: =p cap_net_raw+i、これは十分に私たちの必要性ではありませんe。 sudo /sbin/capsh --caps="cap_net_raw+epi" --print -- -c "./ping …