mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-27 21:47:07 +00:00
Create subPaths and set their permissions like we do mountPaths
This commit is contained in:
parent
b890d318ee
commit
25bdad762b
@ -135,7 +135,28 @@ func makeMounts(pod *v1.Pod, podDir string, container *v1.Container, hostName, h
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
if mount.SubPath != "" {
|
if mount.SubPath != "" {
|
||||||
|
fileinfo, err := os.Lstat(hostPath)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
perm := fileinfo.Mode()
|
||||||
|
|
||||||
hostPath = filepath.Join(hostPath, mount.SubPath)
|
hostPath = filepath.Join(hostPath, mount.SubPath)
|
||||||
|
|
||||||
|
// Create the sub path now because if it's auto-created later when referenced, it may have an
|
||||||
|
// incorrect ownership and mode. For example, the sub path directory must have at least g+rwx
|
||||||
|
// when the pod specifies an fsGroup, and if the directory is not created here, Docker will
|
||||||
|
// later auto-create it with the incorrect mode 0750
|
||||||
|
if err := os.MkdirAll(hostPath, perm); err != nil {
|
||||||
|
glog.Errorf("failed to mkdir:%s", hostPath)
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// chmod the sub path because umask may have prevented us from making the sub path with the same
|
||||||
|
// permissions as the mounter path
|
||||||
|
if err := os.Chmod(hostPath, perm); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Docker Volume Mounts fail on Windows if it is not of the form C:/
|
// Docker Volume Mounts fail on Windows if it is not of the form C:/
|
||||||
|
Loading…
Reference in New Issue
Block a user