|
42 | 42 | import java.nio.file.Files; |
43 | 43 | import java.nio.file.Path; |
44 | 44 | import java.nio.file.Paths; |
| 45 | +import java.nio.file.attribute.FileAttribute; |
| 46 | +import java.nio.file.attribute.PosixFilePermission; |
| 47 | +import java.nio.file.attribute.PosixFilePermissions; |
45 | 48 | import java.security.GeneralSecurityException; |
46 | 49 | import java.util.ArrayList; |
47 | 50 | import java.util.Arrays; |
@@ -201,10 +204,22 @@ public class JGitAPIImpl extends LegacyCompatibleGitAPIImpl { |
201 | 204 | public SshdSessionFactory buildSshdSessionFactory(@NonNull final HostKeyVerifierFactory hostKeyVerifierFactory) { |
202 | 205 | if (Files.notExists(hostKeyVerifierFactory.getKnownHostsFile().toPath())) { |
203 | 206 | try { |
204 | | - Files.createDirectories(hostKeyVerifierFactory |
205 | | - .getKnownHostsFile() |
206 | | - .getParentFile() |
207 | | - .toPath()); |
| 207 | + if (isWindows()) { |
| 208 | + Files.createDirectories(hostKeyVerifierFactory |
| 209 | + .getKnownHostsFile() |
| 210 | + .getParentFile() |
| 211 | + .toPath()); |
| 212 | + } else { |
| 213 | + Set<PosixFilePermission> ownerOnly = PosixFilePermissions.fromString("rwx------"); |
| 214 | + FileAttribute<Set<PosixFilePermission>> fileAttribute = |
| 215 | + PosixFilePermissions.asFileAttribute(ownerOnly); |
| 216 | + Files.createDirectories( |
| 217 | + hostKeyVerifierFactory |
| 218 | + .getKnownHostsFile() |
| 219 | + .getParentFile() |
| 220 | + .toPath(), |
| 221 | + fileAttribute); |
| 222 | + } |
208 | 223 | Files.createFile(hostKeyVerifierFactory.getKnownHostsFile().toPath()); |
209 | 224 | } catch (IOException e) { |
210 | 225 | LOGGER.log(Level.SEVERE, "could not create known hosts file", e); |
@@ -3231,4 +3246,9 @@ public void close() { |
3231 | 3246 | } |
3232 | 3247 | } |
3233 | 3248 | } |
| 3249 | + |
| 3250 | + /** inline ${@link hudson.Functions#isWindows()} to prevent a transient remote classloader issue */ |
| 3251 | + private static boolean isWindows() { |
| 3252 | + return File.pathSeparatorChar == ';'; |
| 3253 | + } |
3234 | 3254 | } |
0 commit comments