package rootless import ( "os" "sync" ) var ( runningWithNonRootUsername bool runningWithNonRootUsernameOnce sync.Once ) // RunningWithNonRootUsername returns true if we $USER is set to a non-root value, // regardless to the UID/EUID value. // // The value of this variable is mostly used for configuring default paths. // If the value is true, $HOME and $XDG_RUNTIME_DIR should be honored for setting up the default paths. // If false (not only EUID==0 but also $USER==root), $HOME and $XDG_RUNTIME_DIR should be ignored // even if we are in a user namespace. func RunningWithNonRootUsername() bool { runningWithNonRootUsernameOnce.Do(func() { u := os.Getenv("USER") runningWithNonRootUsername = u != "" && u != "root" }) return runningWithNonRootUsername }