mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
Merge pull request #43876 from thaJeztah/20.10_backport_42655_vfs_storage_driver
[20.10 backport] Fix file capabilities dropping in Dockerfile
This commit is contained in:
commit
a70ae13d3b
1 changed files with 11 additions and 9 deletions
|
@ -110,11 +110,13 @@ type dirMtimeInfo struct {
|
||||||
stat *syscall.Stat_t
|
stat *syscall.Stat_t
|
||||||
}
|
}
|
||||||
|
|
||||||
// DirCopy copies or hardlinks the contents of one directory to another,
|
// DirCopy copies or hardlinks the contents of one directory to another, properly
|
||||||
// properly handling xattrs, and soft links
|
// handling soft links, "security.capability" and (optionally) "trusted.overlay.opaque"
|
||||||
|
// xattrs.
|
||||||
//
|
//
|
||||||
// Copying xattrs can be opted out of by passing false for copyXattrs.
|
// The copyOpaqueXattrs controls if "trusted.overlay.opaque" xattrs are copied.
|
||||||
func DirCopy(srcDir, dstDir string, copyMode Mode, copyXattrs bool) error {
|
// Passing false disables copying "trusted.overlay.opaque" xattrs.
|
||||||
|
func DirCopy(srcDir, dstDir string, copyMode Mode, copyOpaqueXattrs bool) error {
|
||||||
copyWithFileRange := true
|
copyWithFileRange := true
|
||||||
copyWithFileClone := true
|
copyWithFileClone := true
|
||||||
|
|
||||||
|
@ -207,7 +209,11 @@ func DirCopy(srcDir, dstDir string, copyMode Mode, copyXattrs bool) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
if copyXattrs {
|
if err := copyXattr(srcPath, dstPath, "security.capability"); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
if copyOpaqueXattrs {
|
||||||
if err := doCopyXattrs(srcPath, dstPath); err != nil {
|
if err := doCopyXattrs(srcPath, dstPath); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -256,10 +262,6 @@ func DirCopy(srcDir, dstDir string, copyMode Mode, copyXattrs bool) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
func doCopyXattrs(srcPath, dstPath string) error {
|
func doCopyXattrs(srcPath, dstPath string) error {
|
||||||
if err := copyXattr(srcPath, dstPath, "security.capability"); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
// We need to copy this attribute if it appears in an overlay upper layer, as
|
// We need to copy this attribute if it appears in an overlay upper layer, as
|
||||||
// this function is used to copy those. It is set by overlay if a directory
|
// this function is used to copy those. It is set by overlay if a directory
|
||||||
// is removed and then re-created and should not inherit anything from the
|
// is removed and then re-created and should not inherit anything from the
|
||||||
|
|
Loading…
Reference in a new issue