|
@@ -31,6 +31,7 @@ import (
|
|
|
"time"
|
|
|
|
|
|
"github.com/containerd/containerd/log"
|
|
|
+ "github.com/containerd/containerd/pkg/userns"
|
|
|
"github.com/containerd/continuity/fs"
|
|
|
)
|
|
|
|
|
@@ -380,6 +381,10 @@ func createTarFile(ctx context.Context, path, extractDir string, hdr *tar.Header
|
|
|
// Lchown is not supported on Windows.
|
|
|
if runtime.GOOS != "windows" {
|
|
|
if err := os.Lchown(path, hdr.Uid, hdr.Gid); err != nil {
|
|
|
+ err = fmt.Errorf("failed to Lchown %q for UID %d, GID %d: %w", path, hdr.Uid, hdr.Gid, err)
|
|
|
+ if errors.Is(err, syscall.EINVAL) && userns.RunningInUserNS() {
|
|
|
+ err = fmt.Errorf("%w (Hint: try increasing the number of subordinate IDs in /etc/subuid and /etc/subgid)", err)
|
|
|
+ }
|
|
|
return err
|
|
|
}
|
|
|
}
|