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
이는 명시적으로 문서화되지 않은 것으로 보입니다.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
항목을 보는 것보다 커널 설정(쓰기 가능)을 업데이트하는 데 사용되는지 여부를 결정하는 데 유용합니다.