/proc/self/map_files 심볼릭 링크를 계산할 수 없습니다. 권한이 거부되었습니까?

/proc/self/map_files 심볼릭 링크를 계산할 수 없습니다. 권한이 거부되었습니까?

실행 가능한 매핑을 확인하는 코드를 작성 중입니다. Linux는 /proc/$PID/map_files를 통해 메모리 매핑을 지원하는 파일에 대한 심볼릭 링크를 제공합니다.

내 코드는 이러한 심볼릭 링크 중 하나(주 실행 파일에 해당)에서 "stat()"를 호출하고 불행히도 "권한 거부"를 얻습니다.

일반 명령줄 도구를 사용하여 이를 재현할 수 있습니다.

thomasdullien@debian-laptop:~$ stat /proc/1518/map_files/400000-514000
  File: /proc/1518/map_files/400000-514000 -> /tmp/go-build362981811/b001/hashcache.test
  Size: 64          Blocks: 0          IO Block: 1024   symbolic link
Device: 4h/4d   Inode: 4248433     Links: 1
Access: (0400/lr--------)  Uid: ( 1000/thomasdullien)   Gid: ( 1000/thomasdullien)
Access: 2020-05-23 10:03:58.510445910 +0200
Modify: 2020-05-23 10:03:58.510445910 +0200
Change: 2020-05-23 10:03:58.510445910 +0200
 Birth: -
thomasdullien@debian-laptop:~$ stat -L /proc/1518/map_files/400000-514000
stat: cannot stat '/proc/1518/map_files/400000-514000': Operation not permitted
thomasdullien@debian-laptop:~$ stat /tmp/go-build362981811/b001/hashcache.test
  File: /tmp/go-build362981811/b001/hashcache.test
  Size: 2543616     Blocks: 4968       IO Block: 4096   regular file
Device: fd01h/64769d    Inode: 41425437    Links: 1
Access: (0755/-rwxr-xr-x)  Uid: ( 1000/thomasdullien)   Gid: ( 1000/thomasdullien)
Access: 2020-05-23 10:03:58.482452052 +0200
Modify: 2020-05-23 10:03:58.478452928 +0200
Change: 2020-05-23 10:03:58.478452928 +0200
 Birth: -

따라서 원본 심볼릭 링크를 lstat하고 대상 파일을 통계할 수 있지만 심볼릭 링크에 대한 일반 통계는 실패합니다. 문제는 매뉴얼 페이지의 다음 부분과 관련이 있는 것 같습니다.

No permissions are required on the file itself,  but—in the  case of stat(),
fstatat(), and lstat()—execute (search) permission is required on all of the
directories in  pathname  that  lead  to  the file.

/proc/$PID/map_files/ 자체가 +x가 아닌 것 같아서 프로세스에 이러한 심볼릭 링크를 계산할 권한이 없습니까?

그렇습니까? 권한이 왜 이렇게 설정되었는지 설명할 수 있는 사람이 있나요?

프로세스에서 이러한 심볼릭 링크를 루트가 아닌 사용자로 설정하는 방법이 있습니까?

관련 정보