@@ -42,7 +42,7 @@ func FixPermissions(topPath string, opts ...OptFunc) error {
42
42
43
43
// user gets grant based on the mask
44
44
var userSID * windows.SID
45
- if o .ownership .UID != "" {
45
+ if o .mask & 0700 != 0 && o . ownership .UID != "" {
46
46
userSID , err = windows .StringToSid (o .ownership .UID )
47
47
if err != nil {
48
48
return fmt .Errorf ("failed to get user %s: %w" , o .ownership .UID , err )
@@ -52,7 +52,7 @@ func FixPermissions(topPath string, opts ...OptFunc) error {
52
52
53
53
// group gets grant based on the mask
54
54
var groupSID * windows.SID
55
- if o .ownership .GID != "" {
55
+ if o .mask & 0070 != 0 && o . ownership .GID != "" {
56
56
groupSID , err = windows .StringToSid (o .ownership .GID )
57
57
if err != nil {
58
58
return fmt .Errorf ("failed to get group %s: %w" , o .ownership .GID , err )
@@ -61,11 +61,13 @@ func FixPermissions(topPath string, opts ...OptFunc) error {
61
61
}
62
62
63
63
// everyone gets grant based on the mask
64
- everyoneSID , err := windows .StringToSid (utils .EveryoneSID )
65
- if err != nil {
66
- return fmt .Errorf ("failed to get Everyone SID: %w" , err )
64
+ if o .mask & 0007 != 0 {
65
+ everyoneSID , err := windows .StringToSid (utils .EveryoneSID )
66
+ if err != nil {
67
+ return fmt .Errorf ("failed to get Everyone SID: %w" , err )
68
+ }
69
+ grants = append (grants , acl .GrantSid (uint32 (((o .mask & 0007 )<< 29 )| ((o .mask & 0002 )<< 15 )), everyoneSID ))
67
70
}
68
- grants = append (grants , acl .GrantSid (uint32 (((o .mask & 0007 )<< 29 )| ((o .mask & 0002 )<< 15 )), everyoneSID ))
69
71
70
72
// ownership can only be change to another user when running as Administrator
71
73
isAdmin , err := utils .HasRoot ()
0 commit comments