JM プロジェクトは、主に Linux 関連のマニュアルページの日本語ページを翻訳・公開しています。
... 降の Linux では、 これまでスーパーユーザーに結び付けられてきた権限を、 いくつかのグループに分割している。これらのグループは ケーパビリティ (capability) と呼ばれ、グループ毎に独立に有効、無効を設定できる。 ケーパビリティはスレッド単位の属性である。 ケーパビリティ ... のリスト 以下のリストは、 Linux で実装されているケーパビリティと 各ケーパビリティが許可する操作と動作をまとめたものである。 CAP_AUDIT_CONTROL (Linux 2.6.11 以降) カーネル監査 (audit) の有 ... 名前空間にグループ ID マッピングを書き込むことができる ( user_namespaces (7) 参照)。 CAP_SETFCAP (Linux 2.6.24 以降) ファイルケーパビリティを設定する。 CAP_SETPCAP ファイルケーパビリティがサポートされていない場合: 呼び出し元が許可されているケーパビリティセットに含 ... ... ); int capset(cap_user_header_t hdrp , const cap_user_data_t datap ); 説明 この二つのシステムコールはスレッドのケーパビリティを取得したり設定したりするための 生のカーネルインターフェースである。 これらのシステムコールは Linux 特有であるというだけでな ... d; __u32 inheritable; } *cap_user_data_t; フィールド effective , permitted , inheritable は、 capabilities (7) で定義されるケーパビリティのビットマスクである。 CAP_* はビット番号を表すインデックス値であり、 ビットフィールドに OR を行う前に CAP_* の値の分だけビッ ... d as an option in Linux 2.6.24, and became fixed (nonoptional) in Linux 2.6.33. capget () では、 hdrp->pid のフィールド値にケーパビリティを知りたいプロセスのプロセス ID を 指定することで、任意のプロセスのケーパビリティを調べることができる。 このデータの詳細は c ... ... ); int capset(cap_user_header_t hdrp , const cap_user_data_t datap ); 説明 この二つのシステムコールはスレッドのケーパビリティを取得したり設定したりするための 生のカーネルインターフェースである。 これらのシステムコールは Linux 特有であるというだけでな ... d; __u32 inheritable; } *cap_user_data_t; フィールド effective , permitted , inheritable は、 capabilities (7) で定義されるケーパビリティのビットマスクである。 CAP_* はビット番号を表すインデックス値であり、 ビットフィールドに OR を行う前に CAP_* の値の分だけビッ ... d as an option in Linux 2.6.24, and became fixed (nonoptional) in Linux 2.6.33. capget () では、 hdrp->pid のフィールド値にケーパビリティを知りたいプロセスのプロセス ID を 指定することで、任意のプロセスのケーパビリティを調べることができる。 このデータの詳細は c ... ... る識別子や属性、 特にユーザー ID やグループ ID ( credentials (7) 参照)、 root ディレクトリ、 キー ( keyctl (2) 参照)、 ケーパビリティを分離する。 プロセスのユーザー ID とグループ ID はユーザー名前空間の内部と外部で異なる場合がある。 特に、 あるプロセスがユー ... ADMIN を持っていれば、 setns (2) を使って別のユーザー名前空間に参加することができる。 変更時に、 変更後の名前空間ですべてのケーパビリティを獲得する。 CLONE_NEWUSER を指定して clone (2) や unshare (2) を呼び出すと、 新しいプロセス ( clone (2) の場合) や呼び出した ... プロセス ( unshare (2) の場合) がその呼び出しで作成された新しいユーザー名前空間のメンバーとなる。 ケーパビリティ CLONE_NEWUSER フラグが指定された clone (2) で作成された子プロセスは、 新しい名前空間ですべてのケーパビリティを持った状態で ... ... は最初の引き数によって変化する。 一番目の引き数として以下のものを指定できる: PR_CAPBSET_READ (Linux 2.6.25 以降) で指定されたケーパビリティが呼び出したスレッドのケーパビリティ バインディングセット (capability bounding set) に含まれている場合、 (関数の結果として) ... 1 を返し、そうでない場合 0 を返す (ケーパビリティ定数は < linux/capability.h > で定義されている)。 ケーパビリティバウンディングセットは、 execve (2) を呼び出した際に、ファイ ... ルの許可 (permitted) ケーパビリティの中で そのプロセスが獲得できるケーパビリティを指示するものである。 arg2 に指定されたケーパビリティが有効でない場合、 呼び出 ... ... 照。 プロセスが自分自身をユーザー名前空間に再関連付けするには、 そのプロセスは変更後のユーザー名前空間において CAP_SYS_ADMIN ケーパビリティを持っていなければならない。 ユーザー名前空間への参加に成功すると、 そのユーザー ID やグループ ID に関わらず、 プロセスにはそ ... の名前空間におけるすべてのケーパビリティが認められる。 マルチスレッドのプロセスは setns () でユーザー名前空間を変更できない。 setns () を使って、呼び出し元が現在のユ ... ーザー名前空間に再度入ることは認められていない。 これにより、 いくつかのケーパビリティを外した呼び出し元が setns () を呼び出すことでそれらのケーパビリティを再度得ることを防ぐことができる。 セキュリティ上の理由か ... ... りに fsgid ("ファイルシステムグループID") を使う。 setfsgid (2) を参照すること。 許可の確認をスキップする: スーパーユーザーとケーパビリティ 伝統的な UNIX システムでは、スーパーユーザー ( root , ユーザー ID 0) は非常に強力であり、ファイルアクセス時の 許可による制 ... 限を全てスキップする。 Linux では、スーパーユーザー権限が複数のケーパビリティに分割されている ( capabilities (7) 参照)。ファイルの許可の確認には、 CAP_DAC_OVERRIDE と CAP_DAC_READ_SEARCH の 2つのケーパ ... ビリティが関係する (プロセスの fsuid が 0 の場合、そのプロセスはこれらのケーパビリティを持つ)。 CAP_DAC_OVERRIDE ケーパビリティは全ての許可チェックを上書きする。 実際には、対象となるファイルの 3 つの実行許可ビッ ... ... 効な値は、以下の通り: EPOLLWAKEUP (Linux 3.5 以降) EPOLLONESHOT と EPOLLET がクリアされており、 プロセスが CAP_BLOCK_SUSPEND ケーパビリティを持っている場合、 イベントが処理待ちか処理中かにかかわらず、必ずシステムが "suspend" や "hibernate" に入らないようにすること ... は、 event に NULL でないポインターを指定すべきである。 flags に EPOLLWAKEUP が指定されたが、呼び出し元が CAP_BLOCK_SUSPEND ケーパビリティを持っていない場合、 EPOLLWAKEUP フラグは 黙って無視される 。 元の実装では flags 引き数に対する正当性チェックが実行されていな ... いため、 この残念な動作は必要である。 また、 呼び出し元が CAP_BLOCK_SUSPEND ケーパビリティを持っていなかった場合に呼び出しを失敗させるようにチェックを EPOLLWAKEUP に追加すると、 少なくともひとつは動かなくなる既存の ... ... のコピーを持つ。 このフラグを指定すると、 CLONE_SYSVSEM も暗黙のうちに指定される。 CLONE_NEWIPC を使用するには CAP_SYS_ADMIN ケーパビリティが必要である。 CLONE_NEWNET (Linux 2.6.24 以降) このフラグは clone (2) CLONE_NEWNET フラグと同じ効果を持つ。ネット ワーク名前 ... 元プロセスは他のプロセスとは共有しな い固有のネットワーク名前空間のコピーを持つ。 CLONE_NEWNET を使用する には CAP_SYS_ADMIN ケーパビリティが必要である。 CLONE_NEWNS このフラグは clone (2) CLONE_NEWNS フラグと同じ効果を持つ。 マウント名前空間を共有せず、呼び出し元 ... 前空間のコピーを持つ。 このフラグを指定すると、 CLONE_FS も暗黙のうちに指定される。 CLONE_NEWNS を使用するには CAP_SYS_ADMIN ケーパビリティが必要である。詳細は mount_namespaces (7) を参照。 CLONE_NEWPID (Linux 3.8 以降) このフラグは clone (2) CLONE_NEWPID フラグと ... ... ify グループ数は 128 に制限されている。 この制限は上書きすることができない。 fanotify_init () を呼び出すには CAP_SYS_ADMIN ケーパビリティーが必要である。 この制約は将来のバージョンの API で緩和される可能性がある。 そのため、 以下に示すケーパビリティーチェックの ... 失敗する。 FAN_UNLIMITED_QUEUE そのイベントキューの 16384 イベントの上限を削除する。 このフラグを使用するには CAP_SYS_ADMIN ケーパビリティーが必要である。 FAN_UNLIMITED_MARKS 8192 マークの上限を削除する。 このフラグを使用するには CAP_SYS_ADMIN ケーパビリティーが ... が利用できるのは、 カーネルが CONFIG_FANOTIFY を有効にして作成されている場合だけである。 EPERM 呼び出し元が CAP_SYS_ADMIN ケーパビリティーを持っていないので、操作が許可されない。 バージョン fanotify_init () は Linux カーネルのバージョン 2.6.36 で導入され、 バー ... 日本語の文書やマニュアルを配布している個人/プロジェクトへのリンクです。