Landlock

Linux 5.13で導入された、非特権プロセスが「自分自身とその将来の子プロセス」に対してアクセス制御を自己適用できる仕組み。landlock(7)。積み重ね可能なLSMとして実装されている。 #linux #security

setuidやcapabilitiesとの方向性の違い

setuidcapabilitiesが「他人・他プロセスに権限を与える/絞る」仕組みなのに対し、Landlockは「自分自身の権限を自分で絞る」方向の仕組み。root権限もCAP_SYS_ADMINのような特別なcapabilityも必要とせず、非特権プロセスが単独で利用できる点が特徴。ブラウザのレンダラープロセスのような「信頼できない入力を処理する部分を自己隔離する」用途に向く。

使い方

3つのシステムコールで構成される。

  1. landlock_create_ruleset(2) — 新しいルールセットを作る
  2. landlock_add_rule(2) — ルールセットにルールを追加する(例: 「特定のディレクトリ配下は読み取り専用」)
  3. landlock_restrict_self(2) — ルールセットを呼び出し元スレッドに強制する

ルールはファイル階層(パス)に紐づく形で「あるオブジェクトに対して許可するアクセス権」を表現する。一度landlock_restrict_self(2)で適用すると、その制限を自分で緩めることはできない。

Linuxの権限分離・権限昇格の仕組みの中での位置づけ

setuidcapabilitiesが「他者に権限を与える」方向なのに対し、Landlockとseccompは「自分自身の権限を絞る」方向。両者の違いは、seccompがシステムコール単位のフィルタなのに対し、Landlockはファイルパスのようなオブジェクト単位でルールを表現できる点。

出典

  • man 7 landlock
作成日時: 2026-08-16 07:44 / 更新日時: 2026-08-16 07:44