On systems where sudo is used you can't always rely on ~ for the homedir of the user cloud.
We should use the property of "user.name" as a basis and use that throughout the code instead of heaving ~ or ~cloud hardcoded. Although we are not able to run under a different user yet, the code should be prepared for it as far as we can. Signed-off-by: Wido den Hollander <w...@widodh.nl> --- .../com/cloud/server/ConfigurationServerImpl.java | 16 ++++------------ 1 files changed, 4 insertions(+), 12 deletions(-) diff --git a/server/src/com/cloud/server/ConfigurationServerImpl.java b/server/src/com/cloud/server/ConfigurationServerImpl.java index 81ca96e..304d510 100755 --- a/server/src/com/cloud/server/ConfigurationServerImpl.java +++ b/server/src/com/cloud/server/ConfigurationServerImpl.java @@ -583,16 +583,9 @@ public class ConfigurationServerImpl implements ConfigurationServer { } String already = _configDao.getValue("ssh.privatekey"); String homeDir = null; - if (devel) { - homeDir = Script.runSimpleBashScript("echo ~"); - if (homeDir == null) { - throw new CloudRuntimeException("Cannot get home directory for account: cloud"); - } - } else { - homeDir = Script.runSimpleBashScript("echo ~cloud"); - if (homeDir == null) { - throw new CloudRuntimeException("Cannot get home directory for account: cloud"); - } + homeDir = Script.runSimpleBashScript("echo ~" + userid); + if (homeDir == null) { + throw new CloudRuntimeException("Cannot get home directory for account: " + userid); } if (s_logger.isInfoEnabled()) { @@ -611,7 +604,7 @@ public class ConfigurationServerImpl implements ConfigurationServer { s_logger.info("Systemvm keypairs not found in database. Need to store them in the database"); } // FIXME: take a global database lock here for safety. - Script.runSimpleBashScript("if [ -f ~/.ssh/id_rsa ] ; then rm -f ~/.ssh/id_rsa ; fi; ssh-keygen -t rsa -N '' -f ~/.ssh/id_rsa -q"); + Script.runSimpleBashScript("if [ -f " + privkeyfile + " ] ; then rm -f " + privkeyfile + "; fi; ssh-keygen -t rsa -N '' -f " + privkeyfile + " -q"); byte[] arr1 = new byte[4094]; // configuration table column value size try { @@ -680,7 +673,6 @@ public class ConfigurationServerImpl implements ConfigurationServer { } private void writeKeyToDisk(String key, String keyPath) { - Script.runSimpleBashScript("mkdir -p ~/.ssh"); File keyfile = new File(keyPath); if (!keyfile.exists()) { try { -- 1.7.5.4