From: Mathieu Baudier Date: Wed, 6 Nov 2013 13:36:47 +0000 (+0000) Subject: Merge: Add configurable sudo for OS call backups X-Git-Tag: svn/tags/argeo-commons-1.2.3~5 X-Git-Url: http://git.argeo.org/?a=commitdiff_plain;h=2e8d5eea45604d0f4686d54986be1ce6307aefdb;p=lgpl%2Fargeo-commons.git Merge: Add configurable sudo for OS call backups https://www.argeo.org/bugzilla/show_bug.cgi?id=192 git-svn-id: https://svn.argeo.org/commons/branches/1.x@6592 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- diff --git a/server/runtime/org.argeo.server.core/src/main/java/org/argeo/server/backup/OsCallBackup.java b/server/runtime/org.argeo.server.core/src/main/java/org/argeo/server/backup/OsCallBackup.java index 89071b18a..816157cfd 100644 --- a/server/runtime/org.argeo.server.core/src/main/java/org/argeo/server/backup/OsCallBackup.java +++ b/server/runtime/org.argeo.server.core/src/main/java/org/argeo/server/backup/OsCallBackup.java @@ -45,6 +45,9 @@ public class OsCallBackup extends AbstractAtomicBackup { private Map environment = new HashMap(); + /** Name of the sudo user, root if "", not sudo if null */ + private String sudo = null; + public OsCallBackup() { } @@ -59,7 +62,17 @@ public class OsCallBackup extends AbstractAtomicBackup { @Override public void writeBackup(FileObject targetFo) { - CommandLine commandLine = CommandLine.parse(command, variables); + String commandToUse = command; + + // sudo + if (sudo != null) { + if (sudo.equals("")) + commandToUse = "sudo " + commandToUse; + else + commandToUse = "sudo -u " + sudo + " " + commandToUse; + } + + CommandLine commandLine = CommandLine.parse(commandToUse, variables); ByteArrayOutputStream errBos = new ByteArrayOutputStream(); if (log.isTraceEnabled()) log.trace(commandLine.toString()); @@ -115,4 +128,8 @@ public class OsCallBackup extends AbstractAtomicBackup { this.executor = executor; } + public void setSudo(String sudo) { + this.sudo = sudo; + } + }