mirror of
https://github.com/containers/podman.git
synced 2025-12-04 20:28:40 +08:00
Bumps [github.com/containers/common](https://github.com/containers/common) from 0.26.0 to 0.26.3. - [Release notes](https://github.com/containers/common/releases) - [Commits](containers/common@v0.26.0...v0.26.3) Signed-off-by: dependabot-preview[bot] <support@dependabot.com> Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
26 lines
894 B
Go
26 lines
894 B
Go
package rootless
|
||
|
||
import (
|
||
"os"
|
||
"strconv"
|
||
)
|
||
|
||
// GetRootlessEUID returns the UID of the current user (in the parent userNS, if any)
|
||
//
|
||
// Podman and similar software, in “rootless” configuration, when run as a non-root
|
||
// user, very early switches to a user namespace, where Geteuid() == 0 (but does not
|
||
// switch to a limited mount namespace); so, code relying on Geteuid() would use
|
||
// system-wide paths in e.g. /var, when the user is actually not privileged to write to
|
||
// them, and expects state to be stored in the home directory.
|
||
//
|
||
// If Podman is setting up such a user namespace, it records the original UID in an
|
||
// environment variable, allowing us to make choices based on the actual user’s identity.
|
||
func GetRootlessEUID() int {
|
||
euidEnv := os.Getenv("_CONTAINERS_ROOTLESS_UID")
|
||
if euidEnv != "" {
|
||
euid, _ := strconv.Atoi(euidEnv)
|
||
return euid
|
||
}
|
||
return os.Geteuid()
|
||
}
|