From a225c8f127e5d0675672261c32f8fc749fb0a6bd Mon Sep 17 00:00:00 2001 From: "tgoff0@gmail.com" Date: Fri, 22 May 2015 00:55:48 +0000 Subject: [PATCH] daemon: Improve launching xterm from a sudo environment. --- trunk/daemon/core/netns/vnodeclient.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/trunk/daemon/core/netns/vnodeclient.py b/trunk/daemon/core/netns/vnodeclient.py index 4fe2a3dd..db13153f 100644 --- a/trunk/daemon/core/netns/vnodeclient.py +++ b/trunk/daemon/core/netns/vnodeclient.py @@ -115,9 +115,13 @@ class VnodeClient(object): return tmp def term(self, sh = "/bin/sh"): - return os.spawnlp(os.P_NOWAIT, "xterm", "xterm", "-ut", - "-title", self.name, "-e", - VCMD, "-c", self.ctrlchnlname, "--", sh) + cmd = ("xterm", "-ut", "-title", self.name, "-e", + VCMD, "-c", self.ctrlchnlname, "--", sh) + if "SUDO_USER" in os.environ: + cmd = ("su", "-s", "/bin/sh", "-c", + "exec " + " ".join(map(lambda x: "'%s'" % x, cmd)), + os.environ["SUDO_USER"]) + return os.spawnvp(os.P_NOWAIT, cmd[0], cmd) def termcmdstring(self, sh = "/bin/sh"): return "%s -c %s -- %s" % (VCMD, self.ctrlchnlname, sh)