Skip to content

Commit d732c0d

Browse files
committed
Add symlink permissions test
1 parent 69cd933 commit d732c0d

File tree

1 file changed

+24
-0
lines changed

1 file changed

+24
-0
lines changed

core/src/test/java/org/elasticsearch/bootstrap/SecurityTests.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,4 +204,28 @@ public void testProcessExecution() throws Exception {
204204
fail("didn't get expected exception");
205205
} catch (SecurityException expected) {}
206206
}
207+
208+
/** When a configured dir is a symlink, test that permissions work on link target */
209+
public void testSymlinkPermissions() throws IOException {
210+
Path dir = createTempDir();
211+
212+
Path target = dir.resolve("target");
213+
Files.createDirectory(target);
214+
215+
// symlink
216+
Path link = dir.resolve("link");
217+
try {
218+
Files.createSymbolicLink(link, target);
219+
} catch (UnsupportedOperationException | IOException e) {
220+
assumeNoException("test requires filesystem that supports symbolic links", e);
221+
} catch (SecurityException e) {
222+
assumeNoException("test cannot create symbolic links with security manager enabled", e);
223+
}
224+
Permissions permissions = new Permissions();
225+
Security.addPath(permissions, link, "read");
226+
assertTrue(permissions.implies(new FilePermission(link.toString(), "read")));
227+
assertTrue(permissions.implies(new FilePermission(link.resolve("foo").toString(), "read")));
228+
assertTrue(permissions.implies(new FilePermission(target.toString(), "read")));
229+
assertTrue(permissions.implies(new FilePermission(target.resolve("foo").toString(), "read")));
230+
}
207231
}

0 commit comments

Comments
 (0)