diff --git a/main.go b/main.go index 4d44f09..74b5fbb 100644 --- a/main.go +++ b/main.go @@ -9,6 +9,7 @@ import ( "os" "os/user" "path/filepath" + "strconv" "strings" "github.com/spf13/cobra" @@ -51,7 +52,7 @@ Label: func createAutorizationFile(authorizedKeyFile string) error { - err := os.MkdirAll(filepath.Dir(authorizedKeyFile), 700) + err := os.MkdirAll(filepath.Dir(authorizedKeyFile), 0700) if err != nil { return err } @@ -207,10 +208,10 @@ func rootCmd(cmd *cobra.Command, args []string) error { userAuthorizedKeys = addSSHKeys(userAuthorizedKeys, etcAuthorizedKeys) } - return writeSSHKeysFile(userAuthorizedKeyFile, userAuthorizedKeys) + return writeSSHKeysFile(user, userAuthorizedKeyFile, userAuthorizedKeys) } -func writeSSHKeysFile(authorizedKeyFile string, sshKeys []*sshKey) error { +func writeSSHKeysFile(u *user.User, authorizedKeyFile string, sshKeys []*sshKey) error { if err := createAutorizationFile(authorizedKeyFile); err != nil { return err } @@ -221,7 +222,22 @@ func writeSSHKeysFile(authorizedKeyFile string, sshKeys []*sshKey) error { } defer f.Close() - return writeSSHKeys(f, sshKeys) + err = writeSSHKeys(f, sshKeys) + if err != nil { + return err + } + + uid, err := strconv.Atoi(u.Uid) + if err != nil { + return err + } + + gid, err := strconv.Atoi(u.Gid) + if err != nil { + return err + } + + return os.Chown(authorizedKeyFile, uid, gid) } func writeSSHKeys(w io.Writer, sshKeys []*sshKey) error {