← Documents Documentation/bpf/fs_kfuncs.rst GitHub 원문 ↗

Linux 6.18.37 · BPF

BPF filesystem kfuncs

BPF LSM에서 filesystem xattr·fs-verity digest를 읽는 kfunc와 recursion 방지 규칙을 설명합니다.

Source pathDocumentation/bpf/fs_kfuncs.rst
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.

1. 요약·해설

원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.

요약과 해설

fs_kfuncs.rst:1-21

`bpf_get_file_xattr()`와 `bpf_get_fsverity_digest()`는 BPF LSM hook이 filesystem metadata를 읽는 경로를 제공합니다.

이들은 BPF LSM function에서만 사용할 수 있으며 다른 `security_*()` LSM hook으로 재진입하지 않아야 합니다. 따라서 xattr 조회도 `security_inode_getxattr`를 호출하는 `vfs_getxattr()`를 우회합니다.

2. 영어 원문 전체

번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.

원문 전체 펼치기
1 .. SPDX-License-Identifier: GPL-2.0
2
3 .. _fs_kfuncs-header-label:
4
5 =====================
6 BPF filesystem kfuncs
7 =====================
8
9 BPF LSM programs need to access filesystem data from LSM hooks. The following
10 BPF kfuncs can be used to get these data.
11
12 * ``bpf_get_file_xattr()``
13
14 * ``bpf_get_fsverity_digest()``
15
16 To avoid recursions, these kfuncs follow the following rules:
17
18 1. These kfuncs are only permitted from BPF LSM function.
19 2. These kfuncs should not call into other LSM hooks, i.e. security_*(). For
20 example, ``bpf_get_file_xattr()`` does not use ``vfs_getxattr()``, because
21 the latter calls LSM hook ``security_inode_getxattr``.
22

3. 한국어 전문 번역

영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.

BPF filesystem kfuncs

1-8

이 문서는 `GPL-2.0` license를 따르며 `fs_kfuncs-header-label` anchor에서 BPF filesystem kfunc를 설명합니다.

BPF LSM의 filesystem data 접근

9-10

BPF LSM program은 LSM hook에서 filesystem data에 접근해야 합니다. 아래 BPF kfunc를 사용해 이 data를 가져올 수 있습니다.

제공되는 filesystem kfunc

11-15
  • `bpf_get_file_xattr()`
  • `bpf_get_fsverity_digest()`

Recursion 방지 규칙

16-21

recursion을 피하기 위해 이 kfunc는 다음 규칙을 따릅니다.

  • 이 kfunc는 BPF LSM function에서만 허용됩니다.
  • 이 kfunc는 다른 LSM hook, 즉 `security_*()`를 호출해서는 안 됩니다.

예를 들어 `bpf_get_file_xattr()`는 `vfs_getxattr()`를 사용하지 않습니다. 후자는 LSM hook `security_inode_getxattr`를 호출하기 때문입니다.