Add support for Umask
Signed-off-by: Ashley Cui <acui@redhat.com>
This commit is contained in:
parent
d81c776fa7
commit
93a6847b2d
|
@ -202,6 +202,9 @@ the system uses `65536k`.
|
||||||
`tz="local"`
|
`tz="local"`
|
||||||
`tz="America/New_York"`
|
`tz="America/New_York"`
|
||||||
|
|
||||||
|
**umask**="0022"
|
||||||
|
Sets umask inside the container.
|
||||||
|
|
||||||
**utsns**="private"
|
**utsns**="private"
|
||||||
Default way to to create a UTS namespace for the container.
|
Default way to to create a UTS namespace for the container.
|
||||||
Options are:
|
Options are:
|
||||||
|
|
|
@ -168,6 +168,9 @@ type ContainersConfig struct {
|
||||||
//TZ sets the timezone inside the container
|
//TZ sets the timezone inside the container
|
||||||
TZ string `toml:"tz,omitempty"`
|
TZ string `toml:"tz,omitempty"`
|
||||||
|
|
||||||
|
// Umask is the umask inside the container.
|
||||||
|
Umask string `toml:"umask,omitempty"`
|
||||||
|
|
||||||
// UTSNS indicates how to create a UTS namespace for the container
|
// UTSNS indicates how to create a UTS namespace for the container
|
||||||
UTSNS string `toml:"utsns,omitempty"`
|
UTSNS string `toml:"utsns,omitempty"`
|
||||||
|
|
||||||
|
@ -582,6 +585,10 @@ func (c *ContainersConfig) Validate() error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if err := c.validateUmask(); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
if c.LogSizeMax >= 0 && c.LogSizeMax < OCIBufSize {
|
if c.LogSizeMax >= 0 && c.LogSizeMax < OCIBufSize {
|
||||||
return fmt.Errorf("log size max should be negative or >= %d", OCIBufSize)
|
return fmt.Errorf("log size max should be negative or >= %d", OCIBufSize)
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,6 +6,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
"regexp"
|
||||||
"syscall"
|
"syscall"
|
||||||
|
|
||||||
units "github.com/docker/go-units"
|
units "github.com/docker/go-units"
|
||||||
|
@ -88,6 +89,14 @@ func (c *ContainersConfig) validateTZ() error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *ContainersConfig) validateUmask() error {
|
||||||
|
validUmask := regexp.MustCompile(`^[0-7]{1,4}$`)
|
||||||
|
if !validUmask.MatchString(c.Umask) {
|
||||||
|
return fmt.Errorf("Not a valid Umask %s", c.Umask)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func isRemote() bool {
|
func isRemote() bool {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
|
@ -277,4 +277,30 @@ var _ = Describe("Config Local", func() {
|
||||||
gomega.Expect(err).To(gomega.BeNil())
|
gomega.Expect(err).To(gomega.BeNil())
|
||||||
defer os.Remove(tmpfile)
|
defer os.Remove(tmpfile)
|
||||||
})
|
})
|
||||||
|
It("Default Umask", func() {
|
||||||
|
// Given
|
||||||
|
// When
|
||||||
|
config, err := NewConfig("")
|
||||||
|
// Then
|
||||||
|
gomega.Expect(err).To(gomega.BeNil())
|
||||||
|
gomega.Expect(config.Containers.Umask).To(gomega.Equal("0022"))
|
||||||
|
})
|
||||||
|
It("Set Umask", func() {
|
||||||
|
// Given
|
||||||
|
// When
|
||||||
|
config, err := NewConfig("testdata/containers_default.conf")
|
||||||
|
// Then
|
||||||
|
gomega.Expect(err).To(gomega.BeNil())
|
||||||
|
gomega.Expect(config.Containers.Umask).To(gomega.Equal("0002"))
|
||||||
|
})
|
||||||
|
It("Should fail on bad Umask", func() {
|
||||||
|
// Given
|
||||||
|
sut.Containers.Umask = "88888"
|
||||||
|
|
||||||
|
// When
|
||||||
|
err := sut.Containers.Validate()
|
||||||
|
|
||||||
|
// Then
|
||||||
|
gomega.Expect(err).NotTo(gomega.BeNil())
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
|
@ -27,3 +27,7 @@ func (c *ContainersConfig) validateUlimits() error {
|
||||||
func (c *ContainersConfig) validateTZ() error {
|
func (c *ContainersConfig) validateTZ() error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *ContainersConfig) validateUmask() error {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
|
@ -210,6 +210,10 @@
|
||||||
#
|
#
|
||||||
# tz = ""
|
# tz = ""
|
||||||
|
|
||||||
|
# Set umask inside the container
|
||||||
|
#
|
||||||
|
# umask="0022"
|
||||||
|
|
||||||
# Default way to to create a UTS namespace for the container
|
# Default way to to create a UTS namespace for the container
|
||||||
# Options are:
|
# Options are:
|
||||||
# `private` Create private UTS Namespace for the container.
|
# `private` Create private UTS Namespace for the container.
|
||||||
|
|
|
@ -191,6 +191,7 @@ func DefaultConfig() (*Config, error) {
|
||||||
SeccompProfile: SeccompDefaultPath,
|
SeccompProfile: SeccompDefaultPath,
|
||||||
ShmSize: DefaultShmSize,
|
ShmSize: DefaultShmSize,
|
||||||
TZ: "",
|
TZ: "",
|
||||||
|
Umask: "0022",
|
||||||
UTSNS: "private",
|
UTSNS: "private",
|
||||||
UserNS: "host",
|
UserNS: "host",
|
||||||
UserNSSize: DefaultUserNSSize,
|
UserNSSize: DefaultUserNSSize,
|
||||||
|
@ -504,3 +505,7 @@ func (c *Config) DetachKeys() string {
|
||||||
func (c *Config) TZ() string {
|
func (c *Config) TZ() string {
|
||||||
return c.Containers.TZ
|
return c.Containers.TZ
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *Config) Umask() string {
|
||||||
|
return c.Containers.Umask
|
||||||
|
}
|
||||||
|
|
|
@ -88,6 +88,9 @@ pids_limit = 2048
|
||||||
# Unit is optional and can be b (bytes), k (kilobytes), m (megabytes), or g (gigabytes). If the unit is omitted, the system uses bytes.
|
# Unit is optional and can be b (bytes), k (kilobytes), m (megabytes), or g (gigabytes). If the unit is omitted, the system uses bytes.
|
||||||
shm_size = "65536k"
|
shm_size = "65536k"
|
||||||
|
|
||||||
|
#Umask inside the container
|
||||||
|
umask="0002"
|
||||||
|
|
||||||
# The network table containers settings pertaining to the management of
|
# The network table containers settings pertaining to the management of
|
||||||
# CNI plugins.
|
# CNI plugins.
|
||||||
[network]
|
[network]
|
||||||
|
|
Loading…
Reference in New Issue