отменить совместное использование с дополнительными группами

отменить совместное использование с дополнительными группами

На моей машине 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это, возвращая список "1000 65534 65534 65534 65534 65534 65534 65534 65534 65534". idдедуплицирует этот список.)

Мне, как пользователю, не разрешено отображать никакую группу, кроме эффективной группы в родительском пространстве имен (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этого, конечно, было бы слишком просто. ;-)

Связанный контент