do not limit user file to 400. 600 700 are now acceptable
This commit is contained in:
parent
edc7d951a7
commit
6da9765af5
3 changed files with 9 additions and 20 deletions
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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")
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue