mirror of
https://github.com/containers/podman.git
synced 2025-06-27 21:50:18 +08:00
Merge pull request #8693 from giuseppe/drop-valid-id-in-userns-check
podman: drop checking valid rootless UID
This commit is contained in:
@ -3,7 +3,6 @@ package containers
|
|||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
"strconv"
|
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/containers/common/pkg/completion"
|
"github.com/containers/common/pkg/completion"
|
||||||
@ -15,7 +14,6 @@ import (
|
|||||||
"github.com/containers/podman/v2/pkg/errorhandling"
|
"github.com/containers/podman/v2/pkg/errorhandling"
|
||||||
"github.com/containers/podman/v2/pkg/rootless"
|
"github.com/containers/podman/v2/pkg/rootless"
|
||||||
"github.com/containers/podman/v2/pkg/specgen"
|
"github.com/containers/podman/v2/pkg/specgen"
|
||||||
"github.com/containers/podman/v2/pkg/util"
|
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
"github.com/sirupsen/logrus"
|
"github.com/sirupsen/logrus"
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
@ -108,15 +106,6 @@ func run(cmd *cobra.Command, args []string) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
if rootless.IsRootless() && !registry.IsRemote() {
|
|
||||||
userspec := strings.SplitN(cliVals.User, ":", 2)[0]
|
|
||||||
if uid, err := strconv.ParseInt(userspec, 10, 32); err == nil {
|
|
||||||
if err := util.CheckRootlessUIDRange(int(uid)); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if af := cliVals.Authfile; len(af) > 0 {
|
if af := cliVals.Authfile; len(af) > 0 {
|
||||||
if _, err := os.Stat(af); err != nil {
|
if _, err := os.Stat(af); err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -424,11 +424,6 @@ func (c *Container) generateSpec(ctx context.Context) (*spec.Spec, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if c.config.User != "" {
|
if c.config.User != "" {
|
||||||
if rootless.IsRootless() {
|
|
||||||
if err := util.CheckRootlessUIDRange(execUser.Uid); err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// User and Group must go together
|
// User and Group must go together
|
||||||
g.SetProcessUID(uint32(execUser.Uid))
|
g.SetProcessUID(uint32(execUser.Uid))
|
||||||
g.SetProcessGID(uint32(execUser.Gid))
|
g.SetProcessGID(uint32(execUser.Gid))
|
||||||
|
@ -6,7 +6,6 @@ import (
|
|||||||
"path/filepath"
|
"path/filepath"
|
||||||
"syscall"
|
"syscall"
|
||||||
|
|
||||||
"github.com/containers/podman/v2/pkg/rootless"
|
|
||||||
"github.com/containers/psgo"
|
"github.com/containers/psgo"
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
"github.com/sirupsen/logrus"
|
"github.com/sirupsen/logrus"
|
||||||
@ -53,19 +52,3 @@ func FindDeviceNodes() (map[string]string, error) {
|
|||||||
|
|
||||||
return nodes, nil
|
return nodes, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// CheckRootlessUIDRange checks the uid within the rootless container is in the range from /etc/subuid
|
|
||||||
func CheckRootlessUIDRange(uid int) error {
|
|
||||||
uids, _, err := rootless.GetConfiguredMappings()
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
total := 0
|
|
||||||
for _, u := range uids {
|
|
||||||
total += u.Size
|
|
||||||
}
|
|
||||||
if uid > total {
|
|
||||||
return errors.Errorf("requested user's UID %d is too large for the rootless user namespace", uid)
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
@ -10,8 +10,3 @@ import (
|
|||||||
func FindDeviceNodes() (map[string]string, error) {
|
func FindDeviceNodes() (map[string]string, error) {
|
||||||
return nil, errors.Errorf("not supported on non-Linux OSes")
|
return nil, errors.Errorf("not supported on non-Linux OSes")
|
||||||
}
|
}
|
||||||
|
|
||||||
// CheckRootlessUIDRange is not implemented anywhere except Linux.
|
|
||||||
func CheckRootlessUIDRange(uid int) error {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
Reference in New Issue
Block a user