`/proc/[pid]/uid_map`(`/proc/[pid]/gid_map`)의 사용자(그룹) ID 매핑은 `[pid]` 프로세스에만 적용됩니까, 아니면 전체 네임스페이스에 전역적으로 적용됩니까?

`/proc/[pid]/uid_map`(`/proc/[pid]/gid_map`)의 사용자(그룹) ID 매핑은 `[pid]` 프로세스에만 적용됩니까, 아니면 전체 네임스페이스에 전역적으로 적용됩니까?

이 글을 읽고 나면 ( ) 에 설정된 상위 네임스페이스에 대한 사용자(그룹) ID의 매핑이 네임스페이스의 모든 프로세스에 적용되는지, 아니면 해당 프로세스에만 적용되는지 man user_namespaces잘 모르겠습니다 ./proc/[pid]/uid_map/proc/[pid]/gid_map[pid]

매핑이 모든 프로세스에 적용되는 경우 이는 한 번만 쓸 수 있기 때문에 어떤 프로세스가 위 파일 중 하나에 먼저 쓰는지에 대한 약간의 경쟁 조건입니다.

매핑이 프로세스에만 적용되는 경우 UID가 상위 네임스페이스의 다른 사용자 ID에 매핑될 수 있다는 것이 이상 [pid]하다고 생각합니다 .0

누군가 이것을 설명할 수 있나요?

man user_namespaces:

... 
User and group ID mappings: uid_map and gid_map
       When a user namespace is created, it starts out without a mapping of user IDs (group IDs) to the parent user namespace.  The /proc/[pid]/uid_map and  /proc/[pid]/gid_map  files  (available  since
       Linux  3.5)  expose  the  mappings for user and group IDs inside the user namespace for the process pid.  These files can be read to view the mappings in a user namespace and written to (once) to
       define the mappings.
...

답변1

맨 페이지에는 다음과 같은 내용이 있습니다.

새 사용자 네임스페이스를 생성한 후 uid_map파일하나 네임스페이스의 프로세스는 다음에 쓸 수 있습니다.한 번새 사용자 네임스페이스에서 사용자 ID 매핑을 정의합니다. 사용자 네임스페이스의 파일 에 여러 번 쓰려는 시도가 uid_map오류로 인해 실패했습니다 EPERM. 파일 에도 비슷한 규칙이 적용됩니다 gid_map.

줄 사이에 약간의 읽기가 필요하지만 사용자 네임스페이스의 모든 프로세스가 동일한 사용자 및 그룹 매핑을 공유한다는 사실과 일치합니다.

이는 약간의 경합이 있음을 의미하지만 권한 요구 사항은 적대적인 프로세스가 사용자 네임스페이스를 탈취할 만큼 충분한 권한을 갖고 있는 경우 어쨌든 패배한다는 것을 의미합니다. 경합은 EPERM새 사용자 네임스페이스에 매핑이 설정될 것으로 예상하는 프로세스(새 사용자 네임스페이스에서 다시 시작)를 처리하여 모든 의도와 목적에 따라 완화됩니다.

관련 정보