seteuid ?

Corinna Vinschen
Fri Sep 29 13:59:00 GMT 2000

Earnie Boyd wrote:
> Hey Corinna,
> I've copied my Domain User /etc/passwd record and changed the User=root and
> UID=0.  If I put this record first in /etc/passwd file I could `su -' just fine
> and dandy.  However, that ended up as the user record when starting bash.
> Moving the record to the end of the file, I `su -' and I would the EPERM error.
> This is due to the test of pw_cur != pw_new.  I removed the set_errno and
> return -1 statements and su now changes the effective user.  Comments?

What you have done is _not_ changing the user context. It only looks as
if the context has changed. The test in seteuid() is intended to check
if a previous cygwin_logon_user()/cygwin_set_impersonation_token() pair
was called prior to using seteuid(). I have described that in detail in
the documentation. You can't change the user context without providing
a password. I have finally managed to update the net documentation to
contain the "New setuid concept" chapter. Take a look.

Hope, that helps,

Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Developer              
Red Hat, Inc.

More information about the Cygwin-developers mailing list