This is an automated email from the ASF dual-hosted git repository.
kirs pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/incubator-dolphinscheduler.git
The following commit(s) were added to refs/heads/dev by this push:
new a6a1b94 [Feature-#5128]Support turning off sudo permissions (#5129)
a6a1b94 is described below
commit a6a1b94df4f5c4d22845fe99f2f778ba53d60e5c
Author: guohaozhang <[email protected]>
AuthorDate: Mon Mar 29 11:07:39 2021 +0800
[Feature-#5128]Support turning off sudo permissions (#5129)
* [Feature-#5128]Support turning off sudo permissions
* [Feature-#5128] without sudo permission do not create tenant user
---
.../java/org/apache/dolphinscheduler/common/Constants.java | 5 +++++
.../apache/dolphinscheduler/common/utils/CommonUtils.java | 7 +++++++
.../org/apache/dolphinscheduler/common/utils/OSUtils.java | 10 +++++++---
.../src/main/resources/common.properties | 3 +++
.../server/worker/processor/TaskExecuteProcessor.java | 3 ++-
.../server/worker/task/AbstractCommandExecutor.java | 13 ++++++++-----
6 files changed, 32 insertions(+), 9 deletions(-)
diff --git
a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/Constants.java
b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/Constants.java
index c4b6243..0a46a35 100644
---
a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/Constants.java
+++
b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/Constants.java
@@ -156,6 +156,11 @@ public final class Constants {
public static final String DEVELOPMENT_STATE_DEFAULT_VALUE = "true";
/**
+ * sudo enable
+ */
+ public static final String SUDO_ENABLE = "sudo.enable";
+
+ /**
* string true
*/
public static final String STRING_TRUE = "true";
diff --git
a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/CommonUtils.java
b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/CommonUtils.java
index cf307b4..e68c342 100644
---
a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/CommonUtils.java
+++
b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/CommonUtils.java
@@ -69,6 +69,13 @@ public class CommonUtils {
}
/**
+ * @return sudo enable
+ */
+ public static boolean isSudoEnable() {
+ return PropertyUtils.getBoolean(Constants.SUDO_ENABLE, true);
+ }
+
+ /**
* if upload resource is HDFS and kerberos startup is true , else false
*
* @return true if upload resource is HDFS and kerberos startup
diff --git
a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/OSUtils.java
b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/OSUtils.java
index 92a06fe..09b4e06 100644
---
a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/OSUtils.java
+++
b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/OSUtils.java
@@ -22,12 +22,12 @@ import
org.apache.dolphinscheduler.common.shell.ShellExecutor;
import org.apache.commons.configuration.Configuration;
-import java.lang.management.OperatingSystemMXBean;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.lang.management.ManagementFactory;
+import java.lang.management.OperatingSystemMXBean;
import java.lang.management.RuntimeMXBean;
import java.math.RoundingMode;
import java.text.DecimalFormat;
@@ -406,13 +406,17 @@ public class OSUtils {
}
/**
- * get sudo command
+ * get sudo command
+ *
* @param tenantCode tenantCode
* @param command command
* @return result of sudo execute command
*/
public static String getSudoCmd(String tenantCode, String command) {
- return StringUtils.isEmpty(tenantCode) ? command : "sudo -u " +
tenantCode + " " + command;
+ if (!CommonUtils.isSudoEnable() || StringUtils.isEmpty(tenantCode)) {
+ return command;
+ }
+ return String.format("sudo -u %s %s", tenantCode, command);
}
/**
diff --git a/dolphinscheduler-common/src/main/resources/common.properties
b/dolphinscheduler-common/src/main/resources/common.properties
index 833e049..e46dd15 100644
--- a/dolphinscheduler-common/src/main/resources/common.properties
+++ b/dolphinscheduler-common/src/main/resources/common.properties
@@ -76,3 +76,6 @@ datasource.encryption.salt=!@#$%^&*
# Network IP gets priority, default inner outer
#dolphin.scheduler.network.priority.strategy=default
+
+# use sudo or not, if set true ,executing user is tenant user and deploy user
need sudo permissions ; if set false, executing user is the deploy user, don't
need sudo permissions.
+sudo.enable=true
diff --git
a/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/worker/processor/TaskExecuteProcessor.java
b/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/worker/processor/TaskExecuteProcessor.java
index f03d86b..00f4956 100644
---
a/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/worker/processor/TaskExecuteProcessor.java
+++
b/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/worker/processor/TaskExecuteProcessor.java
@@ -20,6 +20,7 @@ package org.apache.dolphinscheduler.server.worker.processor;
import org.apache.dolphinscheduler.common.enums.Event;
import org.apache.dolphinscheduler.common.enums.ExecutionStatus;
import org.apache.dolphinscheduler.common.enums.TaskType;
+import org.apache.dolphinscheduler.common.utils.CommonUtils;
import org.apache.dolphinscheduler.common.utils.DateUtils;
import org.apache.dolphinscheduler.common.utils.FileUtils;
import org.apache.dolphinscheduler.common.utils.JSONUtils;
@@ -147,7 +148,7 @@ public class TaskExecuteProcessor implements
NettyRequestProcessor {
FileUtils.taskLoggerThreadLocal.set(taskLogger);
try {
FileUtils.createWorkDirIfAbsent(execLocalPath);
- if (workerConfig.getWorkerTenantAutoCreate()) {
+ if (CommonUtils.isSudoEnable() &&
workerConfig.getWorkerTenantAutoCreate()) {
OSUtils.createUserIfAbsent(taskExecutionContext.getTenantCode());
}
} catch (Throwable ex) {
diff --git
a/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/worker/task/AbstractCommandExecutor.java
b/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/worker/task/AbstractCommandExecutor.java
index 392d279..88af2d7 100644
---
a/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/worker/task/AbstractCommandExecutor.java
+++
b/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/worker/task/AbstractCommandExecutor.java
@@ -25,6 +25,7 @@ import org.apache.dolphinscheduler.common.Constants;
import org.apache.dolphinscheduler.common.enums.ExecutionStatus;
import org.apache.dolphinscheduler.common.thread.Stopper;
import org.apache.dolphinscheduler.common.thread.ThreadUtils;
+import org.apache.dolphinscheduler.common.utils.CommonUtils;
import org.apache.dolphinscheduler.common.utils.HadoopUtils;
import org.apache.dolphinscheduler.common.utils.LoggerUtils;
import org.apache.dolphinscheduler.common.utils.OSUtils;
@@ -84,7 +85,7 @@ public abstract class AbstractCommandExecutor {
* log list
*/
protected final List<String> logBuffer;
-
+
protected boolean logOutputIsScuccess = false;
/**
@@ -134,9 +135,11 @@ public abstract class AbstractCommandExecutor {
processBuilder.redirectErrorStream(true);
// setting up user to run commands
- command.add("sudo");
- command.add("-u");
- command.add(taskExecutionContext.getTenantCode());
+ if (CommonUtils.isSudoEnable()) {
+ command.add("sudo");
+ command.add("-u");
+ command.add(taskExecutionContext.getTenantCode());
+ }
command.add(commandInterpreter());
command.addAll(commandOptions());
command.add(commandFile);
@@ -595,4 +598,4 @@ public abstract class AbstractCommandExecutor {
public void setTaskResultString(String taskResultString) {
this.taskResultString = taskResultString;
}
-}
\ No newline at end of file
+}