Skip to content

Commit 9a798cc

Browse files
authored
Grant server read/write permissions on shared data path "path.shared_data". (#131680) (#131851)
Relates to ES-12447 (cherry picked from commit d16eb70) # Conflicts: # libs/entitlement/src/main/java/org/elasticsearch/entitlement/bootstrap/EntitlementBootstrap.java # libs/entitlement/src/test/java/org/elasticsearch/entitlement/runtime/policy/PolicyManagerTests.java # server/src/main/java/org/elasticsearch/bootstrap/Elasticsearch.java # test/framework/src/main/java/org/elasticsearch/entitlement/bootstrap/TestEntitlementBootstrap.java
1 parent d3bc46b commit 9a798cc

File tree

10 files changed

+18
-0
lines changed

10 files changed

+18
-0
lines changed

docs/changelog/131680.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
pr: 131680
2+
summary: Grant server module read/write entitlements for deprecated path setting "path.shared_data"
3+
area: Infra/Core
4+
type: bug
5+
issues: []

libs/entitlement/src/main/java/org/elasticsearch/entitlement/bootstrap/EntitlementBootstrap.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ public static BootstrapArgs bootstrapArgs() {
6969
* @param scopeResolver a functor to map a Java Class to the component and module it belongs to.
7070
* @param settingResolver a functor to resolve a setting name pattern for one or more Elasticsearch settings.
7171
* @param dataDirs data directories for Elasticsearch
72+
* @param sharedDataDir shared data directory for Elasticsearch (deprecated)
7273
* @param sharedRepoDirs shared repository directories for Elasticsearch
7374
* @param configDir the config directory for Elasticsearch
7475
* @param libDir the lib directory for Elasticsearch
@@ -86,6 +87,7 @@ public static void bootstrap(
8687
Function<Class<?>, PolicyManager.PolicyScope> scopeResolver,
8788
Function<String, Stream<String>> settingResolver,
8889
Path[] dataDirs,
90+
Path sharedDataDir,
8991
Path[] sharedRepoDirs,
9092
Path configDir,
9193
Path libDir,
@@ -109,6 +111,7 @@ public static void bootstrap(
109111
getUserHome(),
110112
configDir,
111113
dataDirs,
114+
sharedDataDir,
112115
sharedRepoDirs,
113116
libDir,
114117
modulesDir,

libs/entitlement/src/main/java/org/elasticsearch/entitlement/initialization/HardcodedEntitlements.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
import static org.elasticsearch.entitlement.runtime.policy.PathLookup.BaseDir.LOGS;
3838
import static org.elasticsearch.entitlement.runtime.policy.PathLookup.BaseDir.MODULES;
3939
import static org.elasticsearch.entitlement.runtime.policy.PathLookup.BaseDir.PLUGINS;
40+
import static org.elasticsearch.entitlement.runtime.policy.PathLookup.BaseDir.SHARED_DATA;
4041
import static org.elasticsearch.entitlement.runtime.policy.PathLookup.BaseDir.SHARED_REPO;
4142
import static org.elasticsearch.entitlement.runtime.policy.Platform.LINUX;
4243
import static org.elasticsearch.entitlement.runtime.policy.entitlements.FilesEntitlement.Mode.READ;
@@ -57,6 +58,7 @@ private static List<Scope> createServerEntitlements(Path pidFile) {
5758
FilesEntitlement.FileData.ofBaseDirPath(LOGS, READ_WRITE),
5859
FilesEntitlement.FileData.ofBaseDirPath(LIB, READ),
5960
FilesEntitlement.FileData.ofBaseDirPath(DATA, READ_WRITE),
61+
FilesEntitlement.FileData.ofBaseDirPath(SHARED_DATA, READ_WRITE),
6062
FilesEntitlement.FileData.ofBaseDirPath(SHARED_REPO, READ_WRITE),
6163
// exclusive settings file
6264
FilesEntitlement.FileData.ofRelativePath(Path.of("operator/settings.json"), CONFIG, READ_WRITE).withExclusive(true),

libs/entitlement/src/main/java/org/elasticsearch/entitlement/runtime/policy/PathLookup.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ enum BaseDir {
2020
USER_HOME,
2121
CONFIG,
2222
DATA,
23+
SHARED_DATA,
2324
SHARED_REPO,
2425
LIB,
2526
MODULES,

libs/entitlement/src/main/java/org/elasticsearch/entitlement/runtime/policy/PathLookupImpl.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ public record PathLookupImpl(
2525
Path homeDir,
2626
Path configDir,
2727
Path[] dataDirs,
28+
Path sharedDataDir,
2829
Path[] sharedRepoDirs,
2930
Path libDir,
3031
Path modulesDir,
@@ -56,6 +57,7 @@ public Stream<Path> getBaseDirPaths(BaseDir baseDir) {
5657
return switch (baseDir) {
5758
case USER_HOME -> Stream.of(homeDir);
5859
case DATA -> Arrays.stream(dataDirs);
60+
case SHARED_DATA -> Stream.ofNullable(sharedDataDir);
5961
case SHARED_REPO -> Arrays.stream(sharedRepoDirs);
6062
case CONFIG -> Stream.of(configDir);
6163
case LIB -> Stream.of(libDir);

libs/entitlement/src/test/java/org/elasticsearch/entitlement/initialization/FilesEntitlementsValidationTests.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ public static void beforeClass() {
4848
testBaseDir.resolve("user/home"),
4949
TEST_CONFIG_DIR,
5050
new Path[] { testBaseDir.resolve("data1"), testBaseDir.resolve("data2") },
51+
Path.of("/shareddata"),
5152
new Path[] { testBaseDir.resolve("shared1"), testBaseDir.resolve("shared2") },
5253
TEST_LIBS_DIR,
5354
testBaseDir.resolve("modules"),

libs/entitlement/src/test/java/org/elasticsearch/entitlement/runtime/policy/FileAccessTreeTests.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ private static Path path(String s) {
6060
Path.of("/home"),
6161
Path.of("/config"),
6262
new Path[] { Path.of("/data1"), Path.of("/data2") },
63+
Path.of("/shareddata"),
6364
new Path[] { Path.of("/shared1"), Path.of("/shared2") },
6465
Path.of("/lib"),
6566
Path.of("/modules"),

libs/entitlement/src/test/java/org/elasticsearch/entitlement/runtime/policy/PolicyManagerTests.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ public static void beforeClass() {
7373
TEST_BASE_DIR.resolve("/user/home"),
7474
TEST_BASE_DIR.resolve("/config"),
7575
new Path[] { TEST_BASE_DIR.resolve("/data1/"), TEST_BASE_DIR.resolve("/data2") },
76+
TEST_BASE_DIR.resolve("/shareddata"),
7677
new Path[] { TEST_BASE_DIR.resolve("/shared1"), TEST_BASE_DIR.resolve("/shared2") },
7778
TEST_BASE_DIR.resolve("/lib"),
7879
TEST_BASE_DIR.resolve("/modules"),

libs/entitlement/src/test/java/org/elasticsearch/entitlement/runtime/policy/entitlements/FilesEntitlementTests.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ public static void setupRoot() {
4747
Path.of("/home"),
4848
Path.of("/config"),
4949
new Path[] { Path.of("/data1"), Path.of("/data2") },
50+
Path.of("/shareddata"),
5051
new Path[] { Path.of("/shared1"), Path.of("/shared2") },
5152
Path.of("/lib"),
5253
Path.of("/modules"),

server/src/main/java/org/elasticsearch/bootstrap/Elasticsearch.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -267,6 +267,7 @@ private static void initPhase2(Bootstrap bootstrap) throws IOException {
267267
scopeResolver::resolveClassToScope,
268268
nodeEnv.settings()::getValues,
269269
nodeEnv.dataDirs(),
270+
nodeEnv.sharedDataDir(),
270271
nodeEnv.repoDirs(),
271272
nodeEnv.configDir(),
272273
nodeEnv.libDir(),

0 commit comments

Comments
 (0)