Re: Windows 8 group won't respect /etc/passwd or /etc/group

2014-01-08 Thread Corinna Vinschen
On Jan  8 12:07, John Smith wrote:
> >That's not how it works for me, even with Notepad.  It only changes
> >the file content, not the ownership.
> 
> If you create a file outside of cygwin, you should see it as a group
> of none, correct?  Then if you update that file's group using cygwin
> to "chgrp Users", cygwin reports that file correctly changed groups.
> But the problem comes now when I that file again outside of cygwin,
> then look at the file again in cygwin, the group has once again
> reverted to ?.  I don't recall seeing this happen on a previous
> install (I've used cygwin for years) but some new things for me is
> that I'm running Win 8.1 (user is that windows live account) and I'm
> also trying out cygwin64.
> 
> Are you able to test this

Almost.  I'm using a domain user account but the mechanism is the same.

> and say you are not seeing this?

I'm not seeing this.  Creating the file with Notepad sets user and group
to myself and my primary domain group.  `Chgrp Users' on that file
changes the group to the group Users, which is a local (==non-domain)
predefined group, which is confirmed by ls -l.  Then I start Notepad
on the same file again, change it, and save the changes.  Afterwards,
the file's group is still "Users".

> >>In *nix, once you change a group, just editing a file won't change
> >>the group back to something else.
> >
> >That doesn't happen on Cygwin, too.
> 
> This is the behavior I'm seeing -- so maybe cygwin isn't really able
> to change the group, then?

Yes, it can.  Changing the group does change the security descriptor on
disk.  The effect you're seeing is weird, but it's not how Cygwin
usually works.

>   But again once I
> edit that file the group reverts to  and I lose group
> permissions again. I don't get it.

Me neither.  But see below.

> My apologies, I was just thinking that if I could get my programs to
> open up and make them set the default group to Users whenever they
> add/edit/update/etc a file that might solve the issue, but I am not
> sure that will at this point.  And I'd have to find some way to do
> that across the board, which I think you said wouldn't work.

It works for Cygwin and non-Cygwin processes started from a Cygwin process.
It does not work for processes started from explorer.

OTOH, I don't understand what you're trying to accomplish.  You can just
change the name of the "none" (or "HomeUser", see below) group in
/etc/group and be happy.  The group membership doesn't really matter on
a non-domain standalone system anyway.

> >  Try the icacls command on a file to see
> >what it prints and compare the info with your passwd and group files.
> 
> I'm not sure how to read this.  It's giving me a list of
> permissions, but how do I know what group cygwin sees?

You don't.  Windows doesn't use the primary group field for any
purpose, so there's no reason for a WIndows tool to print the
primary group.  At least, so far Windows never used the primary
group for any purpose, but see below.

> I can
> understand this is the hierarchy of permissions, but I don't see a
> "none" group anywhere --

It's not a hirarchy.  It's just a list.  And, yes, the None group
is missing.  But here I'm wondering.  Do you have the HomeUsers
group in /etc/group?  If not, add it.

I can't be sure, but it seems that Windows uses that group as primary
group if you're using the HomeGroup sharing stuff, which I have no
experience with.  I tried to reproduce this, but this is apparently not
enabled on enterprise systems.  But I read a bit about it, and it
seems to have a life on its own, for instance:

  http://www.tomshardware.co.uk/forum/27119-63-remove-user-homeusers-win7
  
http://social.technet.microsoft.com/Forums/windows/en-US/4d059295-838e-4e81-9658-823897a5bda2/

Probably best not to use it and only use normal workgroup sharing.

> icacls cc.txt
> cc.txt WHITELANCER\John:(RX)
>Whitelancer\HomeUsers:(I)(RX)
>BUILTIN\Administrators:(I)(F)
>NT AUTHORITY\SYSTEM:(I)(F)
>WHITELANCER\John:(I)(F)
>Everyone:(I)(RX)
> 
> If that is the case, how do I make a manual entry in my /etc/group
> for a "John" group?

Don't.  That's your user account.  It doesn't belong into /etc/group.


Corinna

-- 
Corinna Vinschen  Please, send mails regarding Cygwin to
Cygwin Maintainer cygwin AT cygwin DOT com
Red Hat


pgpp1SawZW_HI.pgp
Description: PGP signature


Re: Windows 8 group won't respect /etc/passwd or /etc/group

2014-01-08 Thread John Smith

Hi there,


Yes, of course.  Changing the primary group via /etc/passwd only
works for Cygwin processes and their child processes.  It does not
change the default user token of all processes.  How should that
work, especially since the OS itself doesn't allow to change the
primary group of local user accounts.


Interesting -- so we can change permissions via cygwin, (unless
we're mounted as noacl) but not groups?


The primary group membership of a file is determined by the processes
user token at the time of writing a file.  Native processes not started
by Cygwin processes will have the "none" primary group, unless you're
a domain user.


I'm not a domain user, just a standard install -- though Windows 8.1 
does ask that we connect our users accounts to their windows live 
service or whatever it is.  Could this be confusing matters into sort of 
being on a domain, but not really?



I'm not trying to change
the default group necessarily - that would be convenient, of course,
but the most frustrating part is that it's changing it *back*.


That's not how it works for me, even with Notepad.  It only changes
the file content, not the ownership.


If you create a file outside of cygwin, you should see it as a group of 
none, correct?  Then if you update that file's group using cygwin to 
"chgrp Users", cygwin reports that file correctly changed groups.  But 
the problem comes now when I that file again outside of cygwin, then 
look at the file again in cygwin, the group has once again reverted to 
?.  I don't recall seeing this happen on a previous install (I've 
used cygwin for years) but some new things for me is that I'm running 
Win 8.1 (user is that windows live account) and I'm also trying out 
cygwin64.


Are you able to test this and say you are not seeing this?


In *nix, once you change a group, just editing a file won't change
the group back to something else.


That doesn't happen on Cygwin, too.


This is the behavior I'm seeing -- so maybe cygwin isn't really able to 
change the group, then?  Maybe when I run chgrp, it's someone fooling me 
into thinking it's been changed?  I don't know, until i change the group 
to something like Users, I can't explicitly set the group permissions -- 
so it seems to be working.  But again once I edit that file the group 
reverts to  and I lose group permissions again. I don't get it.



Optimally I would find a way to change the default created group,
but I can survive if cygwin (the OS?) will at least remember the
group when I change it to something else.


The OS is Windows.  Cygwin does know the primary group and it won't
change it at a whim either.


See, this is why I'm so baffled: I *do* have this group.  It's the
last entry in my /etc/groups:

None:S-1-5-21-339652832-68357117-3096367938-513:513:


And your account is a local user account, not a domain account?
If so, the None entry won't be used, and the group information
is  because your real primary group is missing in /etc/group.
Recreate your /etc/passwd and /etc/group files using
mkpasswd -l -d and mkgroup -l -d.


I'm not on a domain to my knowledge.  Running mkgroup -l -d gives me 
local groups and then an error trying to connect to a domain:


mkgroup (90): [1355] The specified domain either does not exist or could 
not be contacted.



Except for the 4294967295, which is just a missing entry for "None" in
/et/cgroup, this is normal.  See above.  It's not a problem of the OS or
Cygwin, you're just misunderstanding how this works.  User tokens
are propagated from process to child process.  The parent processes
of any first Cygwin process is a native Windows process with an
unchanged user token, so it has "None" as primary group.  At startup
of the first Cygwin process, it reads /etc/passwd and /etc/group
and changes the primary group in its user token if requested by your
settings.  This changed user token will be inherited by child processes


Ah, I see.  So do you know if there is anyway to tell applications
to change groups, to avoid this issue of the None/blank/missing
group?


I'm thoroughly confused by this question.  This doesn't happen.  You
seem to be interpreting something you see the wrong way but I can't make
out what that is, sorry.


My apologies, I was just thinking that if I could get my programs to 
open up and make them set the default group to Users whenever they 
add/edit/update/etc a file that might solve the issue, but I am not sure 
that will at this point.  And I'd have to find some way to do that 
across the board, which I think you said wouldn't work.



> Do you have any suggestions or thoughts as to why I'm still seeing

that group of ??? even though "none" exists in my
/etc/group?  I was assuming that the default group must be something
else, not "None", maybe some virtual group that cygwin can't detect
with mkgroup.


mkgroup doesn't print all existing groups, especially not most of
the predefined groups like "Local", "Createor Owner", etc., see

Re: about cygwin_stackdump()

2014-01-08 Thread Christopher Faylor
On Wed, Jan 08, 2014 at 06:06:59PM +0900, KIMURA Masaru wrote:
>2014/1/8 Christopher Faylor wrote:
>> On Tue, Jan 07, 2014 at 11:35:57AM +0900, KIMURA Masaru wrote:
>>>fopen() stackdump file immediately after cygwin_stackdump() calling in
>>>signle process fails.
>>>is this intentional?
>>>https://github.com/hiyuh/cygwin-stackdump-example
>>
>> I rewrote your example slightly to make it work with any executable name
>> by calculating the stackdump name like this:
>>
>>   char *fname = (char *)malloc(strlen(*__argv) + sizeof (".exe.stackdump"));
>>   sprintf(fname, "%s.exe.stackdump", *__argv);
>>   printf("fname = %s\n", fname);
>
>thanks, ill look into this later.
>
>> And compiled it as:
>>
>> gcc -g -DUSE_CYGWIN_STACKDUMP -DUSE_FORK_WAITPID cygwin_stackdump.c -o 
>> cygwin_stackdump.exe
>>
>> That worked fine for me on the most recent Cygwin snapshot: 32/64 bit.
>>
>> Possibly you have BLODA:
>>
>> http://cygwin.com/acronyms#BLODA
>
>i may have one of BLODA, but could you mind to recheck followings for me?
>
>* i wrote "signle process" that means w/o fork() + waitpid().

You made it harder than necessary to debug your problem.

If you had created a very small test case which demonstrated the issue
with clear instructions for building it, then this back and forth
wouldn't be necessary.

Actually, even that would likely not have been necessary if you had just
provided the error message that you were getting from fopen().

i.e., http://cygwin.com/problems.html

Exporting this function is an ancient mistake but we are stuck with
keeping it around to maintain backwards compatibility.  There is
no guarantee that the stackdump you get from this is correct and
we have no plans on augmenting it further.

That said, however, I've made changes to cause the file handle of
the stackdump file to be closed.  It will be in today's snapshot when
it shows up.

http://cygwin.com/snapshots/

--
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



[ANNOUNCEMENT] Updated: openssl-1.0.1f-1

2014-01-08 Thread Corinna Vinschen
I've updated the version of OpenSSL to 1.0.1f-1.

This is an upstream security release.  The Cygwin release is build from
the vanilla sources with just two patches for path handling and support
of 64 bit Cygwin.  Here's the official upstream release message:


   OpenSSL version 1.0.1f released
   ===

   OpenSSL - The Open Source toolkit for SSL/TLS
   http://www.openssl.org/

   The OpenSSL project team is pleased to announce the release of
   version 1.0.1f of our open source toolkit for SSL/TLS. For details
   of changes and known issues see the release notes at:

http://www.openssl.org/news/openssl-1.0.1-notes.html

   OpenSSL 1.0.1f is available for download via HTTP and FTP from the
   following master locations (you can find the various FTP mirrors under
   http://www.openssl.org/source/mirror.html):

 * http://www.openssl.org/source/
 * ftp://ftp.openssl.org/source/

   The distribution file name is:

o openssl-1.0.1f.tar.gz
  Size: 4509212
  MD5 checksum: f26b09c028a0541cab33da697d522b25
  SHA1 checksum: 9ef09e97dfc9f14ac2c042f3b7e301098794fc0f

   The checksums were calculated using the following commands:

openssl md5 openssl-1.0.1f.tar.gz
openssl sha1 openssl-1.0.1f.tar.gz

   Yours,

   The OpenSSL Project Team.



Peace,
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



Re: Re: Windows 8 group won't respect /etc/passwd or /etc/group

2014-01-08 Thread Corinna Vinschen
On Jan  8 10:34, John Smith wrote:
> Hi there,
> 
> First, thanks for the detailed reply!!
> 
> >>I've been struggling with an issue trying to figure out why Windows
> >>8.1 won't seem to respect the trick of setting your /etc/password to
> >>use a default group such as users instead of 'none'.  There are a
> >>few other discussions on this board around changing the group to
> >>"Users" and modifying the /etc/passwd to have a default group.
> >
> >Not sure if the User's Guide is explaining it badly or not, but "None"
> >*is* a group.  It's the primary (what you call "default") group for all
> >users on a local machine not connected to a Windows domain, and it has
> >the SID S-1-5-21513.  If you call mkgroup -l it shows
> >up like this:
> >
> >  None:S-1-5-21-3229976424-329291882-2774727752-513:513:
> >
> >assuming you have an english system, otherwise you see a localized
> >group name.
> 
> Yes, I understand this part.  And I would be happy to see this group
> show up, but it does not seem to be able to identify "None" as the
> group.>
> 
> >Yes, of course.  Changing the primary group via /etc/passwd only
> >works for Cygwin processes and their child processes.  It does not
> >change the default user token of all processes.  How should that
> >work, especially since the OS itself doesn't allow to change the
> >primary group of local user accounts.
> 
> Interesting -- so we can change permissions via cygwin, (unless
> we're mounted as noacl) but not groups?

The primary group membership of a file is determined by the processes
user token at the time of writing a file.  Native processes not started
by Cygwin processes will have the "none" primary group, unless you're
a domain user.

> I'm not trying to change
> the default group necessarily - that would be convenient, of course,
> but the most frustrating part is that it's changing it *back*.

That's not how it works for me, even with Notepad.  It only changes
the file content, not the ownership.

> In *nix, once you change a group, just editing a file won't change
> the group back to something else.

That doesn't happen on Cygwin, too.

> Optimally I would find a way to change the default created group,
> but I can survive if cygwin (the OS?) will at least remember the
> group when I change it to something else.

The OS is Windows.  Cygwin does know the primary group and it won't
change it at a whim either.

> >>Well, technically
> >>it's coming back as 4294967295.  (64 bit cygwin)
> >
> >This can only happen if you dropped the "None" group from your
> >/etc/group file.  mkgroup -l > /etc/group will rectify it.
> 
> See, this is why I'm so baffled: I *do* have this group.  It's the
> last entry in my /etc/groups:
> 
> None:S-1-5-21-339652832-68357117-3096367938-513:513:

And your account is a local user account, not a domain account?
If so, the None entry won't be used, and the group information
is  because your real primary group is missing in /etc/group.
Recreate your /etc/passwd and /etc/group files using 
mkpasswd -l -d and mkgroup -l -d.

> >Except for the 4294967295, which is just a missing entry for "None" in
> >/et/cgroup, this is normal.  See above.  It's not a problem of the OS or
> >Cygwin, you're just misunderstanding how this works.  User tokens
> >are propagated from process to child process.  The parent processes
> >of any first Cygwin process is a native Windows process with an
> >unchanged user token, so it has "None" as primary group.  At startup
> >of the first Cygwin process, it reads /etc/passwd and /etc/group
> >and changes the primary group in its user token if requested by your
> >settings.  This changed user token will be inherited by child processes
> 
> Ah, I see.  So do you know if there is anyway to tell applications
> to change groups, to avoid this issue of the None/blank/missing
> group?

I'm thoroughly confused by this question.  This doesn't happen.  You
seem to be interpreting something you see the wrong way but I can't make
out what that is, sorry.

> >started from this process and subsequent processes, but it does not
> >affect the user tokens of unrelated processes, especially not of
> >non-CYgwin processes started from Explorer.  If you want Notepad to
> >use your group setting, start it from a Cygwin process.
> 
> Just tested this, and yes, that definitely works.  OK, thank you for
> this.  It's not the solution yet but it's on the right track.
> 
> Do you have any suggestions or thoughts as to why I'm still seeing
> that group of ??? even though "none" exists in my
> /etc/group?  I was assuming that the default group must be something
> else, not "None", maybe some virtual group that cygwin can't detect
> with mkgroup.

mkgroup doesn't print all existing groups, especially not most of
the predefined groups like "Local", "Createor Owner", etc., see
http://msdn.microsoft.com/en-us/library/windows/desktop/aa379649%28v=vs.85%29.aspx
These groups are not used for group membership usually, even if they
are 

Re: Re: Windows 8 group won't respect /etc/passwd or /etc/group

2014-01-08 Thread John Smith

Hi there,

First, thanks for the detailed reply!!


I've been struggling with an issue trying to figure out why Windows
8.1 won't seem to respect the trick of setting your /etc/password to
use a default group such as users instead of 'none'.  There are a
few other discussions on this board around changing the group to
"Users" and modifying the /etc/passwd to have a default group.


Not sure if the User's Guide is explaining it badly or not, but "None"
*is* a group.  It's the primary (what you call "default") group for all
users on a local machine not connected to a Windows domain, and it has
the SID S-1-5-21513.  If you call mkgroup -l it shows
up like this:

  None:S-1-5-21-3229976424-329291882-2774727752-513:513:

assuming you have an english system, otherwise you see a localized
group name.


Yes, I understand this part.  And I would be happy to see this group 
show up, but it does not seem to be able to identify "None" as the group.>



Yes, of course.  Changing the primary group via /etc/passwd only
works for Cygwin processes and their child processes.  It does not
change the default user token of all processes.  How should that
work, especially since the OS itself doesn't allow to change the
primary group of local user accounts.


Interesting -- so we can change permissions via cygwin, (unless we're 
mounted as noacl) but not groups?  I'm not trying to change the default 
group necessarily - that would be convenient, of course, but the most 
frustrating part is that it's changing it *back*.


In *nix, once you change a group, just editing a file won't change the 
group back to something else.  Is there a way to get to this within 
cygwin?


Optimally I would find a way to change the default created group, but I 
can survive if cygwin (the OS?) will at least remember the group when I 
change it to something else.



Well, technically
it's coming back as 4294967295.  (64 bit cygwin)


This can only happen if you dropped the "None" group from your
/etc/group file.  mkgroup -l > /etc/group will rectify it.


See, this is why I'm so baffled: I *do* have this group.  It's the last 
entry in my /etc/groups:


None:S-1-5-21-339652832-68357117-3096367938-513:513:


Except for the 4294967295, which is just a missing entry for "None" in
/et/cgroup, this is normal.  See above.  It's not a problem of the OS or
Cygwin, you're just misunderstanding how this works.  User tokens
are propagated from process to child process.  The parent processes
of any first Cygwin process is a native Windows process with an
unchanged user token, so it has "None" as primary group.  At startup
of the first Cygwin process, it reads /etc/passwd and /etc/group
and changes the primary group in its user token if requested by your
settings.  This changed user token will be inherited by child processes


Ah, I see.  So do you know if there is anyway to tell applications to 
change groups, to avoid this issue of the None/blank/missing group?



started from this process and subsequent processes, but it does not
affect the user tokens of unrelated processes, especially not of
non-CYgwin processes started from Explorer.  If you want Notepad to
use your group setting, start it from a Cygwin process.


Just tested this, and yes, that definitely works.  OK, thank you for 
this.  It's not the solution yet but it's on the right track.


Do you have any suggestions or thoughts as to why I'm still seeing that 
group of ??? even though "none" exists in my /etc/group?  I was 
assuming that the default group must be something else, not "None", 
maybe some virtual group that cygwin can't detect with mkgroup.  I just 
can't figure out what group cygwin is detecting it as.  Once I do an 
'ls', cygwin has already tried to map the group and just returns 
'??' (well, -1 or whatever).  Is there a way to see what group 
cygwin is trying to look up?  If I can detect that it's not defaulting 
to the 'None' group, but some other random group, maybe it's a 
configuration option on the OS level to start using "none" again or 
something?


Thank you so much for your thoughts and help on this.

-J





--
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



[ANNOUNCEMENT] Updated: lftp 4.4.14-1

2014-01-08 Thread Andrew Schulman
A new version of lftp, 4.4.14-1, is available in the Cygwin distribution.  This
is a new upstream release that fixes the infamous mirror bug.

lftp is a sophisticated file transfer program and ftp/http/bittorrent client. It
supports multiple network protocols.  It uses the readline library for input, so
it offers tab completion and command history.  It has job control and bookmarks.
It can mirror sites and transfer multiple files in parallel. It keeps trying
interrupted operations until it can complete them.

Andrew E. Schulman


***


To update your installation, click on the "Install Cygwin now" link on
the http://cygwin.com/ web page.  This downloads setup.exe to your
system.  Then, run setup and answer all of the questions.

  *** CYGWIN-ANNOUNCE UNSUBSCRIBE INFO ***

If you want to unsubscribe from the cygwin-announce mailing list, look
at the "List-Unsubscribe: " tag in the email header of this message.
Send email to the address specified there.  It will be in the format:

cygwin-announce-unsubscribe-you=yourdomain.com_at_cygwin.com

If you need more information on unsubscribing, start reading here: 

http://cygwin.com/lists.html#subscribe-unsubscribe

Please read *all* of the information on unsubscribing that is available
starting at this URL.

--
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



Re: [ANNOUNCEMENT] Updated, new for 64-bit: lftp 4.4.11-1

2014-01-08 Thread Achim Gratz
Andrew Schulman  writes:
> Good.  I'll get a new release out.

The new package is good, albeit I haven't seen the announcement yet.  Thank you.


Regards,
Achim.



--
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



[ANNOUNCEMENT] Updated: cppcheck-1.63-1

2014-01-08 Thread Chris Sutcliffe
Version 1.63-1 of cppcheck has been uploaded, following the upstream release.

cppcheck is a tool for static C/C++ code analysis.  It tries to detect bugs that
your C/C++ compiler doesn't see.  The goal is no false positives.

cppcheck is versatile. You can check non-standard code that includes various
compiler extensions, inline assembly code, etc.

For a list of changes see:

http://sourceforge.net/p/cppcheck/news/2014/01/cppcheck-163/

 *** CYGWIN-ANNOUNCE UNSUBSCRIBE INFO ***

If you want to unsubscribe from the cygwin-announce mailing list, look at the
"List-Unsubscribe: " tag in the email header of this message. Send email to the
address specified there. It will be in the format:

cygwin-announce-unsubscribe-you=yourdomain.comcygwin.com

If you need more information on unsubscribing, start reading here:

http://sourceware.org/lists.html#unsubscribe-simple

Please read*all*  of the information on unsubscribing that is available starting
at this URL.

-- 
Chris Sutcliffe
http://google.com/+ChrisSutcliffe

--
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



Re: Windows 8 group won't respect /etc/passwd or /etc/group

2014-01-08 Thread Corinna Vinschen
On Jan  8 01:18, John Smith wrote:
> Hi there,
> I've been struggling with an issue trying to figure out why Windows
> 8.1 won't seem to respect the trick of setting your /etc/password to
> use a default group such as users instead of 'none'.  There are a
> few other discussions on this board around changing the group to
> "Users" and modifying the /etc/passwd to have a default group.

Not sure if the User's Guide is explaining it badly or not, but "None"
*is* a group.  It's the primary (what you call "default") group for all
users on a local machine not connected to a Windows domain, and it has
the SID S-1-5-21513.  If you call mkgroup -l it shows
up like this:

  None:S-1-5-21-3229976424-329291882-2774727752-513:513:

assuming you have an english system, otherwise you see a localized
group name.


> The issue I am stumped over is that if I create a file using windows
> explorer (or anything else outside of cygwin), when I go to ls the
> file in cygwin, the group is coming back as none.

Yes, of course.  Changing the primary group via /etc/passwd only
works for Cygwin processes and their child processes.  It does not
change the default user token of all processes.  How should that
work, especially since the OS itself doesn't allow to change the
primary group of local user accounts.

> Well, technically
> it's coming back as 4294967295.  (64 bit cygwin)

This can only happen if you dropped the "None" group from your
/etc/group file.  mkgroup -l > /etc/group will rectify it.



> Even stranger, I can change the file manually with a chgrp Users and
> it looks and acts fine, but if I go to edit the file with notepad or
> any other external application, the group gets reset back to
> 4294967295.

Except for the 4294967295, which is just a missing entry for "None" in
/et/cgroup, this is normal.  See above.  It's not a problem of the OS or
Cygwin, you're just misunderstanding how this works.  User tokens
are propagated from process to child process.  The parent processes
of any first Cygwin process is a native Windows process with an
unchanged user token, so it has "None" as primary group.  At startup
of the first Cygwin process, it reads /etc/passwd and /etc/group
and changes the primary group in its user token if requested by your
settings.  This changed user token will be inherited by child processes
started from this process and subsequent processes, but it does not
affect the user tokens of unrelated processes, especially not of
non-CYgwin processes started from Explorer.  If you want Notepad to
use your group setting, start it from a Cygwin process.

Btw., the name of a group is irrelevant except for printing purposes.
So you are free to change it.  Rather than switching your primary group
from 513 to 545, you can also simply change the name of the None group
to whatever you like:

  MyGroup:S-1-5-21-3229976424-329291882-2774727752-513:513:

Just keep in mind that the three numbers in the middle of the SID 
are machine specific, so don't copy/paste this line from my mail!
Run mkpasswd -l to create this line for your machine and then change
the name of the group to your liking.


Corinna

-- 
Corinna Vinschen  Please, send mails regarding Cygwin to
Cygwin Maintainer cygwin AT cygwin DOT com
Red Hat


pgpbQioR9hrkY.pgp
Description: PGP signature


Re: about cygwin_stackdump()

2014-01-08 Thread KIMURA Masaru
2014/1/8 Christopher Faylor wrote:
> On Tue, Jan 07, 2014 at 11:35:57AM +0900, KIMURA Masaru wrote:
>>fopen() stackdump file immediately after cygwin_stackdump() calling in
>>signle process fails.
>>is this intentional?
>>https://github.com/hiyuh/cygwin-stackdump-example
>
> I rewrote your example slightly to make it work with any executable name
> by calculating the stackdump name like this:
>
>   char *fname = (char *)malloc(strlen(*__argv) + sizeof (".exe.stackdump"));
>   sprintf(fname, "%s.exe.stackdump", *__argv);
>   printf("fname = %s\n", fname);

thanks, ill look into this later.

> And compiled it as:
>
> gcc -g -DUSE_CYGWIN_STACKDUMP -DUSE_FORK_WAITPID cygwin_stackdump.c -o 
> cygwin_stackdump.exe
>
> That worked fine for me on the most recent Cygwin snapshot: 32/64 bit.
>
> Possibly you have BLODA:
>
> http://cygwin.com/acronyms#BLODA

i may have one of BLODA, but could you mind to recheck followings for me?

* i wrote "signle process" that means w/o fork() + waitpid().
  you looks compiling w/ -DUSE_FORK_WAITPID that will use fork() + waitpid().
  we are discussing fork() + waitpid() is really required or not.
  https://github.com/nickg/nvc/pull/25

* correct following my understanding:
  cygwin_stackdump() is in src/winsup/cygwin/exceptions.cc of cygwin.
  according to this code,
  + cygwin_exception::dumpstack() opens stack dump file by using
 open_stackdumpfile().
 there is no configuration for stack dump file name.
  + maximum stack trace depth is 16.
 there is no configuration for this depth.
  + after calling cygwin_exception::dumpstack(), cygwin_stackdump() ends.
 after printing stack trace contents, cygwin_exception::dumpstack() ends.
 thus, cygwin_stackdump() looks having no stack dump file closing.
  + cygwin_stackdump() is exported, but the implementation status looks WIP.

--
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