내 Linux 컴퓨터에는 나(나의 사용자)가 기본 그룹과 여러 다른 그룹을 가지고 있습니다(나는 그룹 150에 속합니다).
$ id -u; id -g; id -G
1000
1000
1000 6 21 91 97 150 190 465 996 1003
명령을 사용자 네임스페이스로 격리해야 합니다. 나는 unshare --user
이것을 사용합니다 :
$ unshare --user --map-user=4000 --map-group=4000 bash -c 'id -u; id -g; id -G'
4000
4000
4000 65534
(참고로 제가 속한 그룹은 모두 보존되었으나 대부분이 새로운 사용자 네임스페이스에 매핑되지 않았기 때문에 오버플로 그룹인 65534, "nobody", "nogroup"으로 대체되었습니다. getgroups
호출하여 확인하세요. 그러면 id
해당 목록에서 중복 항목을 제거하는 "1000 65534 65534 65534 65534 65534 65534 65534 65534 65534" 목록이 반환됩니다 .
사용자로서 나는 상위 네임스페이스(1000)의 유효한 그룹 이외의 그룹을 매핑할 수 없습니다. 하지만 여기서는 추가 그룹 중 하나를 사용하여 높은 권한으로 실행 파일을 실행해야 합니다(이 작업은 /usr/bin/dumpcap
그룹 중 하나가 그룹 150에 있고 외부 네임스페이스 중간에 있는 경우에만 실행할 수 있습니다).
$ ls -n /usr/bin/dumpcap
-rwxr-xr-- 1 0 150 116928 Jun 7 21:16 /usr/bin/dumpcap
$ getcap /usr/bin/dumpcap
/usr/bin/dumpcap cap_dac_override,cap_net_admin,cap_net_raw=eip
사용자 네임스페이스의 그룹을 내가 상위 네임스페이스(여기서는 150)에 속한 보조 그룹에 매핑하도록 하는 방법이 있습니까? —— CAP_SETGID
물론 그렇지 않으면 너무 쉬울 것입니다. ;-)