diff --git a/oci/spec_opts.go b/oci/spec_opts.go index 864b792c5fc4..f38828988577 100644 --- a/oci/spec_opts.go +++ b/oci/spec_opts.go @@ -683,6 +683,10 @@ func WithUser(userstr string) SpecOpts { return err } + // Use a read-only mount when trying to get user/group information + // from the container's rootfs. Since the option does read operation + // only, we append ReadOnly mount option to prevent the Linux kernel + // from syncing whole filesystem in umount syscall. return mount.WithReadonlyTempMount(ctx, mounts, f) default: return fmt.Errorf("invalid USER value %s", userstr) @@ -743,6 +747,10 @@ func WithUserID(uid uint32) SpecOpts { return err } + // Use a read-only mount when trying to get user/group information + // from the container's rootfs. Since the option does read operation + // only, we append ReadOnly mount option to prevent the Linux kernel + // from syncing whole filesystem in umount syscall. return mount.WithReadonlyTempMount(ctx, mounts, setUser) } } @@ -787,6 +795,10 @@ func WithUsername(username string) SpecOpts { return err } + // Use a read-only mount when trying to get user/group information + // from the container's rootfs. Since the option does read operation + // only, we append ReadOnly mount option to prevent the Linux kernel + // from syncing whole filesystem in umount syscall. return mount.WithReadonlyTempMount(ctx, mounts, setUser) } else if s.Windows != nil { s.Process.User.Username = username @@ -865,6 +877,10 @@ func WithAdditionalGIDs(userstr string) SpecOpts { return err } + // Use a read-only mount when trying to get user/group information + // from the container's rootfs. Since the option does read operation + // only, we append ReadOnly mount option to prevent the Linux kernel + // from syncing whole filesystem in umount syscall. return mount.WithReadonlyTempMount(ctx, mounts, setAdditionalGids) } } @@ -926,6 +942,10 @@ func WithAppendAdditionalGroups(groups ...string) SpecOpts { return err } + // Use a read-only mount when trying to get user/group information + // from the container's rootfs. Since the option does read operation + // only, we append ReadOnly mount option to prevent the Linux kernel + // from syncing whole filesystem in umount syscall. return mount.WithReadonlyTempMount(ctx, mounts, setAdditionalGids) } }