'기타'는 -r--r--r-- 권한으로 /proc/PID/ 아래의 'smaps_rollup' 파일을 읽을 수 없습니다. 왜?

'기타'는 -r--r--r-- 권한으로 /proc/PID/ 아래의 'smaps_rollup' 파일을 읽을 수 없습니다. 왜?

status두 개의 특정 파일, 즉 및 smaps_rollup아래의 모든 프로세스 를 읽으려고 합니다 /proc. 모든 프로세스 디렉터리에는 dr-xr-xr-x권한이 있으며 이러한 각 디렉터리로 이동할 수 있습니다.

모든 프로세스에 대해 두 파일에 대한 권한은 -r--r--r--.

이것은 이상한 행동입니다. PID 1에서 두 개의 파일을 읽으려고 한다고 가정해 보겠습니다. status파일을 읽을 수 있지만 smaps_rollup아래를 참조하십시오.

$ cd /proc/1

$ ls -l status smaps_rollup
-r--r--r-- 1 root root 0 Apr  5 18:34 smaps_rollup
-r--r--r-- 1 root root 0 Mar 21 12:18 status

$ grep "Swap:" status
VmSwap:     1072 kB

$ grep "Swap:" smaps_rollup
grep: smaps_rollup: Permission denied

$ cat smaps_rollup
cat: smaps_rollup: Permission denied

관련 질문을 찾아봤는데 그 중 일부를 발견했습니다 [1][2][3][4] . 그들 중 누구도 같은 문제가 없습니다. 이러한 다른 문제에 대한 해결책은 디렉터리에서 누락된 실행 권한을 수정해야 합니다. 여기서는 그렇지 않습니다.

proc의 마운트 정보는 다음과 같습니다.

proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)

저는 Arch Linux에서 제공하는 커널 6.2.7-arch1-1을 사용하여 Arch Linux를 실행하고 있습니다.

나는 이 이상한 행동에 대한 정확한 설명을 찾고 있습니다. 해결 방법으로 sudo를 사용하는 것 외에 이 문제를 해결할 수 있는 다른 방법이 있나요?


  1. 올바른 권한이 있어도 파일을 읽을 수 없습니다

  2. 왜 파일을 읽을 수 없나요?

  3. "기타"에 대한 파일 읽기 권한이 작동하지 않습니다.

  4. /proc/에 대한 읽기 권한을 확인하는 방법/문서?

답변1

이는 명시적으로 문서화되지 않은 것으로 보입니다.man 5 proc, 문서를 통해 /proc/[pid]/maps:

ptrace 이 파일에 대한 액세스는 액세스 모드 확인에 의해 제어됩니다 PTRACE_MODE_READ_FSCREDS.ptrace(2).

문서 smaps에 따르면

이러한 행 중 첫 번째 행에는 의 매핑과 동일한 정보가 표시됩니다 /proc/[pid]/maps.

후자이기 때문에예민한, 유사한 방식으로 보호됩니다. smaps_rollup덜 민감하고열 수 있다하지만 제가 아는 한, 후자 패치에서는 아무런 진전이 이루어지지 않았습니다.

이 문제를 해결하려면 함수를 사용하는 것이 가능해야 하는데 아직 시도하지 않았습니다.

많은 파일, 디렉터리 및 링크는 /proc특히 해당 권한이 나타내는 만큼 액세스할 수 있는 것은 아닙니다. 많은 파일에는 maps및 와 smaps동일한 권한이 필요합니다 PTRACE_MODE_READ_FSCREDS. 이러한 요구 사항은 다음에 자세히 설명되어 있습니다.man 5 proc. 즉, 가시적 권한은 권한의 상한으로만 간주되어야 하며, 특히 /proc항목을 보는 것보다 커널 설정(쓰기 가능)을 업데이트하는 데 사용되는지 여부를 결정하는 데 유용합니다.

관련 정보