Fix access denied on mounted vhdx root
It seems that in certain situations, like having the containerd root and state on a file system hosted on a mounted VHDX, we need SeSecurityPrivilege when opening a file with winio.ACCESS_SYSTEM_SECURITY. This happens in the base layer writer in hcsshim when adding a new file. Enabling SeSecurityPrivilege allows the containerd root to be hosted on a vhdx. Signed-off-by: Gabriel Adrian Samfira <gsamfira@cloudbasesolutions.com>
This commit is contained in:
@@ -478,6 +478,14 @@ func (s *snapshotter) convertScratchToReadOnlyLayer(ctx context.Context, snapsho
|
||||
writer.CloseWithError(err)
|
||||
}()
|
||||
|
||||
// It seems that in certain situations, like having the containerd root and state on a file system hosted on a
|
||||
// mounted VHDX, we need SeSecurityPrivilege when opening a file with winio.ACCESS_SYSTEM_SECURITY. This happens
|
||||
// in the base layer writer in hcsshim when adding a new file.
|
||||
if err := winio.EnableProcessPrivileges([]string{winio.SeSecurityPrivilege}); err != nil {
|
||||
return fmt.Errorf("enabling privileges: %w", err)
|
||||
}
|
||||
defer winio.DisableProcessPrivileges([]string{winio.SeSecurityPrivilege})
|
||||
|
||||
if _, err := ociwclayer.ImportLayerFromTar(ctx, reader, path, parentLayerPaths); err != nil {
|
||||
return fmt.Errorf("failed to reimport snapshot: %w", err)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user