[1.7] sshd dc problem
Corinna Vinschen
corinna-cygwin@cygwin.com
Tue Jun 23 13:45:00 GMT 2009
On Jun 22 17:48, Reini Urban wrote:
> Starting the laptop at home, without PDC connection works. I can properly login.
> But ssh to this box fails with -1 = initgroups (URBANR, 10513)
> This is without cyglsa
>
> $ /usr/sbin/sshd -d -D
> 25 592959 [main] sshd 5208 fhandler_tty_slave::write: (680): tty
> output_mutex: acquired
> debug1: temporarily_use_uid: 17966/10513 (e=18/544)
> 24 592983 [main] sshd 5208 fhandler_tty_slave::write: (723): tty
> output_mutex released
> 2243125 2836108 [main] sshd 5208 seterrno_from_win_error:
> /ext/build/netrel/src/cygwin-1.7.0-50/winsup/cygwin/sec_auth.cc:195
> windows error 1355
> 45131 2881239 [main] sshd 5208 geterrno_from_win_error: unknown
> windows error 1355, setting errno to 13
> 25 2881264 [main] sshd 5208 __set_errno: void
> seterrno_from_win_error(const char*, int, DWORD):319 val 13
> 1785 2883049 [main] sshd 5208 seterrno_from_win_error:
> /ext/build/netrel/src/cygwin-1.7.0-50/winsup/cygwin/sec_auth.cc:256
> windows error 2221
> 34 2883083 [main] sshd 5208 geterrno_from_win_error: unknown
> windows error 2221, setting errno to 13
> 23 2883106 [main] sshd 5208 __set_errno: void
> seterrno_from_win_error(const char*, int, DWORD):319 val 13
> 46 2883152 [main] sshd 5208 initgroups32: -1 = initgroups (URBANR, 10513)
>
> $ id URBANR
> uid=17966(URBANR) gid=10513(apache) groups=10513(apache)
>
> error 1355: DcGetDcName(PDC_REQUIRED) call failed
> error 2221: UserGetLocalGroups failed
>
> I should be able to login with pubkey to my box with sshd when windows
> lets me in also.
That's easier said than done.
Apparently your laptop is configured to allow using cached credentials
which are used by the machine if it can't connect to a DC. The token
information (groups/privileges) is also cached somewhere in a
non-documented storage. Whatever Windows is using, it's not accessible
for Cygwin. At least I don't know how to do it.
If Cygwin can't connect one of the DCs, then I don't get the group
information for the given domain account. If I have no group
information, I can only generate a broken user token. The problem
here is that initgroups() is called before setuid(). If setuid()
would always be called first, we already would have a token and could
fetch the groups from there, but that's idle wishing.
So, for the time being, the workaround to get a user token is thus:
1. I'll patch Cygwin to ignore the fact that the group information
couldn't be fetched from the server.
2. Either you're happy with a restricted token, or you use the new logon
method 3 as described in
http://cygwin.com/1.7/cygwin-ug-net/ntsec.html#ntsec-setuid-overview
This results in getting a token right from Windows based on the
cached credentials.
Corinna
--
Corinna Vinschen Please, send mails regarding Cygwin to
Cygwin Project Co-Leader cygwin AT cygwin DOT com
Red Hat
--
Problem reports: http://cygwin.com/problems.html
FAQ: http://cygwin.com/faq/
Documentation: http://cygwin.com/docs.html
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
More information about the Cygwin
mailing list