This is the mail archive of the
cygwin
mailing list for the Cygwin project.
Re: Output from mkpasswd/mkgroup ... Again confused (2)
- From: "Houder" <houder at xs4all dot nl>
- To: cygwin at cygwin dot com
- Date: Thu, 27 Nov 2014 18:41:25 +0100
- Subject: Re: Output from mkpasswd/mkgroup ... Again confused (2)
- Authentication-results: sourceware.org; auth=none
- References: <de348a1a01030b7251083837cb586676 dot squirrel at webmail dot xs4all dot nl> <20141127164116 dot GD3810 at calimero dot vinschen dot de>
> On Nov 27 17:12, Houder wrote:
>> Hi Corinna,
>>
>> For comparison: output of 'mkpasswd -l' with and without /etc/nsswitch.conf present. Without it, my machine
>> is NOT a 'foreign machine'. When it is present, my machine is a 'foreign machine'. Strikes me as ...
>>
>> Until now, I believed that the output of mkpasswd/mkgroup had no dependency on /etc/nsswitch.conf.
>
> The most recent version has. Here's what happens. If you call mkpasswd
> without parameter, it just calls Cygwin's internal enumeration functions.
> If you call with -l, it checks if `passwd:' is set to "files" only in
> /etc/nsswitch.conf. If so, it uses the old enumeration functions inside
> mkpasswd, which don't generate prefixed usernames for local accounts
> even on AD machines. However, the uids/gids differ when using this
> method. I could change the offset in this case to reduce the chance for
> a difference, but hey, there's no good reason to use /etc/passwd at all
> in your scenario :}
... ahem, you keep saying that (no need for /etc/passwd) to me :-)) However, my (personal) bin
directory has a script called mkpasswd_r(edacted) ... that modifies the uid of some of my users
(yes, me, and a few aliases for me).
And I am sure, that I am not the only one with a script like that ...
Above you are explaining _implementation_ ... not specification.
64-@@ uname -a
CYGWIN_NT-6.1 Seven 1.7.33-2(0.280/5/3) 2014-11-13 15:47 x86_64 Cygwin # ATTENTION: NOT the test release
64-@@ mkpasswd | grep Henri
Henri:unused:1000:513:U-Seven\Henri,S-1-5-21-91509220-1575020443-2714799223-1000:/home/Henri:/bin/bash
64-@@ mkpasswd -l | grep Henri
Henri:unused:1000:513:U-Seven\Henri,S-1-5-21-91509220-1575020443-2714799223-1000:/home/Henri:/bin/bash
As you will observe, in the 'old days', mkpasswd -l defaulted to 'mkpasswd'.
As it does for the test release, in case one removes /etc/nsswitch.conf.
@@ mkpasswd | grep Henri
Henri:*:197608:197121:U-Seven\Henri,S-1-5-21-91509220-1575020443-2714799223-1000:/home/Henri:/bin/bash
@@ mkpasswd -l | grep Henri
Henri:*:197608:197121:U-Seven\Henri,S-1-5-21-91509220-1575020443-2714799223-1000:/home/Henri:/bin/bash
(in fact 'mkpasswd -l <my machine>' now shows the same output as the above commands do)
However, in case "nsswitch.conf" specifies passwd: files
mkpasswd and mkpasswd -l are NOT equal anymore # as result of the _implementation_
This change in behaviour is not apparent from 'mkpasswd --help' ... and it is not documented anywhere.
Yes, I know, that you modified the _implementation_ in response to a request by Christian Franke, and
I do not object against change, but change should not confuse ... I believe.
Bottom-line: the kludge you introduced in mkpasswd (at the request of C.) backfired (well, it did to me).
Henri
=====
--
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