Linuxでのスクリプトの機能


8

実行可能ファイルcapabilities(7)などの機能()を設定したいがCAP_NET_BIND_SERVICE、そのファイルがスクリプトである場合、setcap(8)そのスクリプトを開始するインタープリターに機能()を設定する必要がありますか、それともスクリプトファイルに設定するだけで十分ですか?自体?

注:質問は特にScientific Linux 6.1に関するものですが、一般的には答えられると思います。

回答:


8

スクリプトに機能を設定しても効果はありません。setuidスクリプトで少し動作していないのと同じような状況です。後者の場合と同様に、execveシバンの処理方法とその背後にあるセキュリティの推論の実装です(詳細については、「シェルスクリプトでsetuidを許可する」を参照してください)。

これらのオプションがあると思います

  1. インタプリタ自体に機能を設定します(実際にはそれのコピーです)

    • ここで問題が発生し、それを実行できるすべての人がそれらの高度な機能で実行されます(任意のスクリプトを実行したり、インタラクティブに開始したりできる)
  2. スクリプトを実行するハードコードされたロジックを持つラッパー実行可能ファイルを記述し、この実行可能ファイルに必要な機能を設定します

    • スクリプトを変更、削除、置換できないようにしてください
    • それでも、chrootそのようなラッパーを誤用する可能性があります

どちらの場合も、フラグexecveを設定して機能セットが存続することを確認する必要がありますinheritable。選択したユーザーに対してのみ構成によって実際に必要な機能を実際にアクティブ化するためにpam_caplibcap通常、で配布を使用することもできます。

そして、一般的には、環境を変更することで誰もあなたのインタプリタの振る舞いを変更できないようにしたいでしょう。PYTHON_PATHまたは似たようなもの。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.