setcapはもう使用されていませんか?

setcapはもう使用されていませんか?

ルート以外のIDを使用してWebサーバーを起動します。システムユニットファイル。

listen tcp :80: bind: permission denied逃げたがまだ残ってる

setcap cap_net_bind_service=+ep

実行可能ファイルに。

私が見つけたインターネットのサンプル単位ファイルから

CapabilityBoundingSet=CAP_NET_BIND_SERVICE
AmbientCapabilities=CAP_NET_BIND_SERVICE

ユニットファイルに使用されます。それで試してみましたが、突然アプリケーションはポート80をバインドできました。

これが私に何を教えてくれますか?setcap廃止、廃止、無視されますか?通じるだけシステムそれとも通常はLinuxのみを使用しますか?

答え1

正しい言葉は通常、systemdが管理するファイル機能を使用しませんが、setcapそれをサービスユニットの一部として構成する必要があることです。

したがって、完全には使用されていませんsetcap...(システム起動サービスの外部で有効な用途に使用できます).しかし、少なくともシステムサービスには適用されません.

実際、ファイル機能(設定によるsetcap)は常に最初から疑わしかったです。 「継承可能」機能を使用する必要がありますが、これは多少誤って考えられ、多くの欠点があります...「環境」機能のカーネルは次のとおりです。これらの多くの問題を解決するために導入されており、新しいシステムが採用しているのです(ここにはAmbientCapabilities=低ポートにバインドできるようにサービスを設定していることが分かるようにsystemdを含む)。

関数のトピックは非常に複雑です...問題の詳細な紹介については、確認したい場合があります。「受け継がれた能力」LWNから。関数セットのいくつかの代数表記を含む詳細については、次を参照してください。能力(7)マンページ。

関連情報