mirror of
https://github.com/containers/podman.git
synced 2025-08-01 07:40:22 +08:00
Fix addition of mount options when using RO tmpfs
For read-only containers set to create tmpfs filesystems over /run and other common destinations, we were incorrectly setting mount options, resulting in duplicate mount options. Signed-off-by: Matthew Heon <matthew.heon@pm.me>
This commit is contained in:
@ -163,14 +163,16 @@ func (config *CreateConfig) parseVolumes(runtime *libpod.Runtime) ([]spec.Mount,
|
|||||||
// If requested, add tmpfs filesystems for read-only containers.
|
// If requested, add tmpfs filesystems for read-only containers.
|
||||||
if config.ReadOnlyRootfs && config.ReadOnlyTmpfs {
|
if config.ReadOnlyRootfs && config.ReadOnlyTmpfs {
|
||||||
readonlyTmpfs := []string{"/tmp", "/var/tmp", "/run"}
|
readonlyTmpfs := []string{"/tmp", "/var/tmp", "/run"}
|
||||||
options := []string{"rw", "rprivate", "exec", "nosuid", "nodev", "tmpcopyup"}
|
options := []string{"rw", "rprivate", "nosuid", "nodev", "tmpcopyup"}
|
||||||
for _, dest := range readonlyTmpfs {
|
for _, dest := range readonlyTmpfs {
|
||||||
if _, ok := baseMounts[dest]; ok {
|
if _, ok := baseMounts[dest]; ok {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
localOpts := options
|
localOpts := options
|
||||||
if dest == "/run" {
|
if dest == "/run" {
|
||||||
localOpts = append(localOpts, "dev", "suid", "noexec", "size=65536k")
|
localOpts = append(localOpts, "noexec", "size=65536k")
|
||||||
|
} else {
|
||||||
|
localOpts = append(localOpts, "exec")
|
||||||
}
|
}
|
||||||
baseMounts[dest] = spec.Mount{
|
baseMounts[dest] = spec.Mount{
|
||||||
Destination: dest,
|
Destination: dest,
|
||||||
|
@ -10,7 +10,7 @@ var (
|
|||||||
// ErrBadMntOption indicates that an invalid mount option was passed.
|
// ErrBadMntOption indicates that an invalid mount option was passed.
|
||||||
ErrBadMntOption = errors.Errorf("invalid mount option")
|
ErrBadMntOption = errors.Errorf("invalid mount option")
|
||||||
// ErrDupeMntOption indicates that a duplicate mount option was passed.
|
// ErrDupeMntOption indicates that a duplicate mount option was passed.
|
||||||
ErrDupeMntOption = errors.Errorf("duplicate option passed")
|
ErrDupeMntOption = errors.Errorf("duplicate mount option passed")
|
||||||
)
|
)
|
||||||
|
|
||||||
// DefaultMountOptions sets default mount options for ProcessOptions.
|
// DefaultMountOptions sets default mount options for ProcessOptions.
|
||||||
|
Reference in New Issue
Block a user