mirror of
https://github.com/containers/podman.git
synced 2025-06-24 03:08:13 +08:00
Merge pull request #4839 from giuseppe/fix-keep-id-big-ids
libpod: fix --userns=keep-id with big UIDs
This commit is contained in:
@ -335,6 +335,13 @@ func ParseIDMapping(mode namespaces.UsernsMode, UIDMapSlice, GIDMapSlice []strin
|
|||||||
return nil, errors.New("cannot specify subuidmap or subgidmap with --userns=keep-id")
|
return nil, errors.New("cannot specify subuidmap or subgidmap with --userns=keep-id")
|
||||||
}
|
}
|
||||||
if rootless.IsRootless() {
|
if rootless.IsRootless() {
|
||||||
|
min := func(a, b int) int {
|
||||||
|
if a < b {
|
||||||
|
return a
|
||||||
|
}
|
||||||
|
return b
|
||||||
|
}
|
||||||
|
|
||||||
uid := rootless.GetRootlessUID()
|
uid := rootless.GetRootlessUID()
|
||||||
gid := rootless.GetRootlessGID()
|
gid := rootless.GetRootlessGID()
|
||||||
|
|
||||||
@ -352,13 +359,17 @@ func ParseIDMapping(mode namespaces.UsernsMode, UIDMapSlice, GIDMapSlice []strin
|
|||||||
|
|
||||||
options.UIDMap, options.GIDMap = nil, nil
|
options.UIDMap, options.GIDMap = nil, nil
|
||||||
|
|
||||||
options.UIDMap = append(options.UIDMap, idtools.IDMap{ContainerID: 0, HostID: 1, Size: uid})
|
options.UIDMap = append(options.UIDMap, idtools.IDMap{ContainerID: 0, HostID: 1, Size: min(uid, maxUID)})
|
||||||
options.UIDMap = append(options.UIDMap, idtools.IDMap{ContainerID: uid, HostID: 0, Size: 1})
|
options.UIDMap = append(options.UIDMap, idtools.IDMap{ContainerID: uid, HostID: 0, Size: 1})
|
||||||
|
if maxUID > uid {
|
||||||
options.UIDMap = append(options.UIDMap, idtools.IDMap{ContainerID: uid + 1, HostID: uid + 1, Size: maxUID - uid})
|
options.UIDMap = append(options.UIDMap, idtools.IDMap{ContainerID: uid + 1, HostID: uid + 1, Size: maxUID - uid})
|
||||||
|
}
|
||||||
|
|
||||||
options.GIDMap = append(options.GIDMap, idtools.IDMap{ContainerID: 0, HostID: 1, Size: gid})
|
options.GIDMap = append(options.GIDMap, idtools.IDMap{ContainerID: 0, HostID: 1, Size: min(gid, maxGID)})
|
||||||
options.GIDMap = append(options.GIDMap, idtools.IDMap{ContainerID: gid, HostID: 0, Size: 1})
|
options.GIDMap = append(options.GIDMap, idtools.IDMap{ContainerID: gid, HostID: 0, Size: 1})
|
||||||
|
if maxGID > gid {
|
||||||
options.GIDMap = append(options.GIDMap, idtools.IDMap{ContainerID: gid + 1, HostID: gid + 1, Size: maxGID - gid})
|
options.GIDMap = append(options.GIDMap, idtools.IDMap{ContainerID: gid + 1, HostID: gid + 1, Size: maxGID - gid})
|
||||||
|
}
|
||||||
|
|
||||||
options.HostUIDMapping = false
|
options.HostUIDMapping = false
|
||||||
options.HostGIDMapping = false
|
options.HostGIDMapping = false
|
||||||
|
Reference in New Issue
Block a user