問題は機能についてです。ユーザーがsetcapを使用して機能を設定できるようにする必要があります。ルートで呼び出すと、すべてうまくいきます。例:$ Sudo setcap cap_dac_override,cap_dac_read_search+ep ./bin_file
$ getcap ./bin_file
./bin_file = cap_dac_override,cap_dac_read_search+ep
しかし、ユーザー権限でコマンドを実行すると...
$ /sbin/setcap cap_dac_override,cap_dac_read_search+ep ./bin_file
unable to set CAP_SETFCAP effective capability: Operation not permitted
次の文字列を/etc/security/capability.conf
に追加しました:
cap_setfcap,cap_dac_override,cap_dac_read_search user
しかし、それでも機能しません。
あなたの/sbin/setcap
は継承可能なセットにも許可されたセットにもCAP_SETFCAP
ビットを持っていないからです。ファイルの実効ビットも設定されていません。
そして、richard
が言ったように、root以外のユーザーにこれらの2つの機能を付与した場合、セキュリティは意味がありません。
ユーザー/プロセスがcap_setfcap
またはcap_dac_override
を持っている場合、ルートアクセスを取得するのは簡単です。
ユーザーが信頼されている場合は、それらをグループSudo/sudoersに追加でき(構成によって異なります)、Sudo
を使用できます。
/etc/sudoers.d/
にルールを追加して、ユーザーがsetcap
のみを指定された方法でのみ実行できるようにすることもできます。ただし、これは誤った安心感を与えるだけです。