diff options
author | OpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com> | 2020-07-17 16:12:47 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-07-17 16:12:47 -0400 |
commit | 10c5f241231a55a90a37b9f578c84a6bb23ae33e (patch) | |
tree | c4cd71f522523cb9f5be4ebcb4b53ead7be74575 /cmd | |
parent | dfca83d37cefdde966c8b770058a9b9fd5f8ed20 (diff) | |
parent | 65d382dc689805750c71756d9e43d04007ad4fd5 (diff) | |
download | podman-10c5f241231a55a90a37b9f578c84a6bb23ae33e.tar.gz podman-10c5f241231a55a90a37b9f578c84a6bb23ae33e.tar.bz2 podman-10c5f241231a55a90a37b9f578c84a6bb23ae33e.zip |
Merge pull request #7005 from giuseppe/set-umask-rlimits
abi: set default umask and rlimits
Diffstat (limited to 'cmd')
-rw-r--r-- | cmd/podman/early_init_linux.go | 39 | ||||
-rw-r--r-- | cmd/podman/early_init_unsupported.go | 6 | ||||
-rw-r--r-- | cmd/podman/root.go | 1 |
3 files changed, 46 insertions, 0 deletions
diff --git a/cmd/podman/early_init_linux.go b/cmd/podman/early_init_linux.go new file mode 100644 index 000000000..b43450a7f --- /dev/null +++ b/cmd/podman/early_init_linux.go @@ -0,0 +1,39 @@ +package main + +import ( + "fmt" + "os" + "syscall" + + "github.com/containers/libpod/v2/libpod/define" + "github.com/pkg/errors" +) + +func setRLimits() error { + rlimits := new(syscall.Rlimit) + rlimits.Cur = define.RLimitDefaultValue + rlimits.Max = define.RLimitDefaultValue + if err := syscall.Setrlimit(syscall.RLIMIT_NOFILE, rlimits); err != nil { + if err := syscall.Getrlimit(syscall.RLIMIT_NOFILE, rlimits); err != nil { + return errors.Wrapf(err, "error getting rlimits") + } + rlimits.Cur = rlimits.Max + if err := syscall.Setrlimit(syscall.RLIMIT_NOFILE, rlimits); err != nil { + return errors.Wrapf(err, "error setting new rlimits") + } + } + return nil +} + +func setUMask() { + // Be sure we can create directories with 0755 mode. + syscall.Umask(0022) +} + +func earlyInitHook() { + if err := setRLimits(); err != nil { + fmt.Fprint(os.Stderr, "Failed to set rlimits: "+err.Error()) + } + + setUMask() +} diff --git a/cmd/podman/early_init_unsupported.go b/cmd/podman/early_init_unsupported.go new file mode 100644 index 000000000..4e748559f --- /dev/null +++ b/cmd/podman/early_init_unsupported.go @@ -0,0 +1,6 @@ +// +build !linux + +package main + +func earlyInitHook() { +} diff --git a/cmd/podman/root.go b/cmd/podman/root.go index eccca3d11..c6ced21c0 100644 --- a/cmd/podman/root.go +++ b/cmd/podman/root.go @@ -77,6 +77,7 @@ func init() { cobra.OnInitialize( loggingHook, syslogHook, + earlyInitHook, ) rootFlags(rootCmd, registry.PodmanConfig()) |