do not limit user file to 400. 600 700 are now acceptable

This commit is contained in:
tgic 2014-12-22 13:57:13 +08:00 committed by Boshi Lian
parent edc7d951a7
commit 6da9765af5
3 changed files with 9 additions and 20 deletions

View file

@ -130,7 +130,7 @@ sshpiper reads `workingdir/github/sshpiper_upstream` and the connect to the upst
#### User files
*These file MUST be in mode 400*
*These file MUST NOT be accessible to group or other. (chmod og-rwx filename)*
* sshpiper_upstream

View file

@ -35,7 +35,7 @@ func (file userFile) realPath(user string) string {
return userSpecFile(user, string(file))
}
// return error if not 400, nil if 400 and no err occurs
// return error if other and group have access right
func (file userFile) checkPerm(user string) error {
filename := userSpecFile(user, string(file))
f, err := os.Open(filename)
@ -49,8 +49,8 @@ func (file userFile) checkPerm(user string) error {
return err
}
if fi.Mode().Perm() != 0400 {
return fmt.Errorf("%v's perm is too open, change it to 400", filename)
if fi.Mode().Perm()&0077 != 0 {
return fmt.Errorf("%v's perm is too open", filename)
}
return nil

View file

@ -100,14 +100,14 @@ func TestCheckPerm(t *testing.T) {
t.Fatalf("should fail when read 0777 user file")
}
err = os.Chmod(f.realPath(user), 0400)
err = os.Chmod(f.realPath(user), 0600)
if err != nil {
t.Fatalf("cant change file mode %v", err)
}
err = f.checkPerm(user)
if err != nil {
t.Fatalf("fail when read 0400 user file", err)
t.Fatalf("fail when read 0600 user file", err)
}
}
@ -221,7 +221,7 @@ func TestMapPublicKeyFromUserfile(t *testing.T) {
t.Fatalf("should return err when file too open")
}
err = os.Chmod(UserAuthorizedKeysFile.realPath(user), 0400)
err = os.Chmod(UserAuthorizedKeysFile.realPath(user), 0600)
if err != nil {
t.Fatalf("cant change file mode %v", err)
}
@ -232,7 +232,7 @@ func TestMapPublicKeyFromUserfile(t *testing.T) {
t.Fatalf("should return err when file too open")
}
err = os.Chmod(UserKeyFile.realPath(user), 0400)
err = os.Chmod(UserKeyFile.realPath(user), 0600)
if err != nil {
t.Fatalf("cant change file mode %v", err)
}
@ -255,23 +255,12 @@ func TestMapPublicKeyFromUserfile(t *testing.T) {
t.Logf("testing not in UserAuthorizedKeysFile")
// TODO 0400 might be too close, not easy for changing. openssh use og-rw
err = os.Chmod(UserAuthorizedKeysFile.realPath(user), 0777)
if err != nil {
t.Fatalf("cant change file mode %v", err)
}
authKeys = ssh.MarshalAuthorizedKey(privateKey2.PublicKey())
err = ioutil.WriteFile(UserAuthorizedKeysFile.realPath(user), authKeys, 0400)
err = ioutil.WriteFile(UserAuthorizedKeysFile.realPath(user), authKeys, 0600)
if err != nil {
t.Fatalf("cant create file: %v", err)
}
err = os.Chmod(UserAuthorizedKeysFile.realPath(user), 0400)
if err != nil {
t.Fatalf("cant change file mode %v", err)
}
signer, err = mapPublicKeyFromUserfile(stubConnMetadata{user}, privateKey.PublicKey())
if signer != nil {
t.Fatalf("should not map private key when public key not in UserAuthorizedKeysFile")