rcolebaugh / rpms / openssh

Forked from rpms/openssh 2 years ago
Clone
3e8b5b
diff --git a/authfile.c b/authfile.c
3e8b5b
index e93d867..4fc5b3d 100644
3e8b5b
--- a/authfile.c
3e8b5b
+++ b/authfile.c
3e8b5b
@@ -32,6 +32,7 @@
3e8b5b
 
3e8b5b
 #include <errno.h>
3e8b5b
 #include <fcntl.h>
3e8b5b
+#include <grp.h>
3e8b5b
 #include <stdio.h>
3e8b5b
 #include <stdarg.h>
3e8b5b
 #include <stdlib.h>
3e8b5b
@@ -207,6 +208,13 @@ sshkey_perm_ok(int fd, const char *filename)
3e8b5b
 #ifdef HAVE_CYGWIN
3e8b5b
 	if (check_ntsec(filename))
3e8b5b
 #endif
3e8b5b
+	if (st.st_mode & 040) {
3e8b5b
+		struct group *gr;
3e8b5b
+
3e8b5b
+		if ((gr = getgrnam("ssh_keys")) && (st.st_gid == gr->gr_gid))
3e8b5b
+			st.st_mode &= ~040;
3e8b5b
+	}
3e8b5b
+
3e8b5b
 	if ((st.st_uid == getuid()) && (st.st_mode & 077) != 0) {
3e8b5b
 		error("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
3e8b5b
 		error("@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @");