Commit dbb5cd0
build: keep setuid/setgid/sticky on unpacked directories
retrieveWorkspace created directories with MkdirAll(hdr.Name,
mode.Perm()). .Perm() masks to 0o777 and nothing applied the special
bits afterwards, so a directory the guest workspace has as 1777 or
2755 landed on the host as 0777 or 0755 and those bits never reached
the built apk. wolfi-baselayout chmods /tmp and /var/tmp to 1777, and
the published wolfi-baselayout apk records both as 0777.
Chmod the full mode after MkdirAll when the header carries any of
setuid/setgid/sticky. Directories without those bits are left alone,
so the melange-out directories melange pre-creates keep their current
handling. The regular file branch already passes the full mode to
OpenFile, so it needs no change.
The bubblewrap OCI layer extraction had the same shape, which left the
build environment's own /tmp non-sticky. os.MkdirAll there also applies
the umask, so plain 0777 was lost as well; passing mode.Perm()|special
to os.Chmod restores both.
Only the qemu runner retrieves a workspace tar -- bubblewrap and docker
bind-mount the workspace, where WorkspaceTar is a no-op.
Fixes #2642
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>1 parent 7e518c0 commit dbb5cd0
3 files changed
Lines changed: 148 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1100 | 1100 | | |
1101 | 1101 | | |
1102 | 1102 | | |
| 1103 | + | |
| 1104 | + | |
| 1105 | + | |
| 1106 | + | |
1103 | 1107 | | |
1104 | 1108 | | |
1105 | 1109 | | |
| |||
1159 | 1163 | | |
1160 | 1164 | | |
1161 | 1165 | | |
1162 | | - | |
| 1166 | + | |
| 1167 | + | |
1163 | 1168 | | |
1164 | 1169 | | |
1165 | 1170 | | |
| 1171 | + | |
| 1172 | + | |
| 1173 | + | |
| 1174 | + | |
| 1175 | + | |
| 1176 | + | |
| 1177 | + | |
| 1178 | + | |
1166 | 1179 | | |
1167 | 1180 | | |
1168 | 1181 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
42 | 42 | | |
43 | 43 | | |
44 | 44 | | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
45 | 49 | | |
46 | 50 | | |
47 | 51 | | |
| |||
325 | 329 | | |
326 | 330 | | |
327 | 331 | | |
328 | | - | |
| 332 | + | |
| 333 | + | |
329 | 334 | | |
330 | 335 | | |
| 336 | + | |
| 337 | + | |
| 338 | + | |
| 339 | + | |
| 340 | + | |
| 341 | + | |
| 342 | + | |
331 | 343 | | |
332 | 344 | | |
333 | 345 | | |
| |||
0 commit comments