|
|
|
@@ -358,6 +358,18 @@ func appendAuthorizedKeysToFile(keys ...*PublicKey) error { |
|
|
|
sshOpLocker.Lock() |
|
|
|
defer sshOpLocker.Unlock() |
|
|
|
|
|
|
|
if setting.SSH.RootPath != "" { |
|
|
|
// First of ensure that the RootPath is present, and if not make it with 0700 permissions |
|
|
|
// This of course doesn't guarantee that this is the right directory for authorized_keys |
|
|
|
// but at least if it's supposed to be this directory and it doesn't exist and we're the |
|
|
|
// right user it will at least be created properly. |
|
|
|
err := os.MkdirAll(setting.SSH.RootPath, 0700) |
|
|
|
if err != nil { |
|
|
|
log.Error("Unable to MkdirAll(%s): %v", setting.SSH.RootPath, err) |
|
|
|
return err |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
fPath := filepath.Join(setting.SSH.RootPath, "authorized_keys") |
|
|
|
f, err := os.OpenFile(fPath, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0600) |
|
|
|
if err != nil { |
|
|
|
@@ -645,6 +657,18 @@ func rewriteAllPublicKeys(e Engine) error { |
|
|
|
sshOpLocker.Lock() |
|
|
|
defer sshOpLocker.Unlock() |
|
|
|
|
|
|
|
if setting.SSH.RootPath != "" { |
|
|
|
// First of ensure that the RootPath is present, and if not make it with 0700 permissions |
|
|
|
// This of course doesn't guarantee that this is the right directory for authorized_keys |
|
|
|
// but at least if it's supposed to be this directory and it doesn't exist and we're the |
|
|
|
// right user it will at least be created properly. |
|
|
|
err := os.MkdirAll(setting.SSH.RootPath, 0700) |
|
|
|
if err != nil { |
|
|
|
log.Error("Unable to MkdirAll(%s): %v", setting.SSH.RootPath, err) |
|
|
|
return err |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
fPath := filepath.Join(setting.SSH.RootPath, "authorized_keys") |
|
|
|
tmpPath := fPath + ".tmp" |
|
|
|
t, err := os.OpenFile(tmpPath, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0600) |
|
|
|
|