On Sun, Feb 21, 2010 at 12:19:47PM +0100, Ingo Schwarze wrote:
> Tobias Ulmer wrote on Sun, Feb 21, 2010 at 02:36:43AM +0100:
>
> > I've got a bunch of "users" with no password/no way to log in, just to
> > keep services tidy and separated. Some of these have to connect to ssh
> > servers, therefore they require a .ssh/known_hosts. /etc/security thinks
> > this is a security risk and complains about it every night...
>
> I think the basic idea makes sense.
>
> The file name still in use for backward compatibility,
> ".ssh/authorized_keys2",
> is obviously missing form the patch, though.
Oh fsck, where's that file documented? I was looking at sshd(8) which I
thought should be authoritative about these kind of things. A quick grep
through /usr/share/man has 0 matches.
Your patch looks fine to me.
>
> Reading /usr/src/usr.bin/ssh/pathnames.h, i found no other file
> name missing from the patch, but it would be nice if one of the
> OpenSSH hackers could confirm this.
>
> In case i receive an OK and no objections, i plan to put the
> following in after unlock:
>
>
> Index: security
> ===================================================================
> RCS file: /cvs/src/etc/security,v
> retrieving revision 1.88
> diff -u -r1.88 security
> --- security 3 Jun 2009 14:45:39 -0000 1.88
> +++ security 21 Feb 2010 10:28:14 -0000
> @@ -40,7 +40,7 @@
> printf("Login %s is off but still has a valid shell and
> an entry in /etc/skey.\n", $1);
> if (system("test -d "$9" -a ! -r "$9"") == 0)
> printf("Login %s is off but still has valid shell and
> home directory is unreadable\n\t by root; cannot check for existence of
> alternate access files.\n", $1);
> - else if (system("for file in .ssh .rhosts .shosts .klogin; do
> if test -e "$9"/$file; then if ((ls -ld "$9"/$file | cut -b 2-10 | grep -q r)
> && (test ! -O "$9"/$file)) ; then exit 1; fi; fi; done"))
> + else if (system("for file in .ssh/authorized_keys
> .ssh/authorized_keys2 .rhosts .shosts .klogin; do if test -e "$9"/$file; then
> if ((ls -ld "$9"/$file | cut -b 2-10 | grep -q r) && (test ! -O "$9"/$file))
> ; then exit 1; fi; fi; done"))
> printf("Login %s is off but still has a valid shell
> and alternate access files in\n\t home directory are still readable.\n",$1);
> }
> if ($3 == 0 && $1 != "root")