delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin-developers/1999/01/12/07:39:53

From: cgf AT cygnus DOT com (Christopher Faylor)
Subject: Re: Repost: chown succeed, but SID is wrong!
12 Jan 1999 07:39:53 -0800 :
Message-ID: <19990112100915.J21061.cygnus.cygwin32.developers@cygnus.com>
References: <369B13DB DOT E9A92D59 AT cityweb DOT de>
Mime-Version: 1.0
To: Corinna Vinschen <corinna DOT vinschen AT cityweb DOT de>,
cygwin32-developers AT cygnus DOT com

Sorry.  I committed this change.  I forgot to note it in the ChangeLog.
It will be in the next snapshot.

-chris

On Tue, Jan 12, 1999 at 10:20:27AM +0100, Corinna Vinschen wrote:
>I repost the following, because I got no response.
>Is there anybody out there for comments?
>
>--------- snip ----------
>Funny:
>
>chown works as expected, with the following exception:
>
>My standalone workstation is named `corinna' and my personal
>user account is named `corinna', too. The relative SID is 1000.
>If I start the command
>
>	chown corinna foo
>
>and later
>
>	ls -lGn foo
>
>the surprising result is:
>
>	-rwxr-xr-x   1 65535    300396 Jan  1 19:38 foo
>
>instead of
>
>	-rwxr-xr-x   1 1000     300396 Jan  1 19:38 foo
>
>If I look into this files properties in the explorer,
>the owner is `unknown'.
>
>I have found, that the function LookupAccountName()
>returns the SID for the account corinna, but with the
>SID-type indicator set to SidTypeDomain! The function
>has returned the SID for the computer, not for the user.
>
>--> Error in original posting:
>The tool XCACLS.EXE from NTRESKIT has the same error.
>--> Correct:
>The tool SUBINACL.EXE from NTRESKIT has the same error.
>
>I have patched the function chown in syscalls.cc. I'm not sure,
>if this is a reasonable solution, but it works for me and I think
>it's a good start for a real solution. I have attached the patch.
>It only does the following:
>
>If the returned SidType is not SidTypeUser, it calls LookupAccountName()
>again, with username set to `returned_domain_name\\username'.
>
>Regards,
>Corinna
>
>ChangeLog:
>==========
>Sun Jan  3 23:20:00 1998  Corinna Vinschen  <corinna DOT vinschen AT cityweb DOT de>
>
>	* syscalls.cc (chown): Retry LookupAccountName with username set
>	to domain\\username, if returned SID-Type is not SidTypeUser.
>
>Index: syscalls.cc
>===================================================================
>RCS file: /src/cvsroot/winsup-981230/syscalls.cc,v
>retrieving revision 1.1.1.1
>diff -u -p -r1.1.1.1 syscalls.cc
>--- syscalls.cc 1998/12/30 23:01:58     1.1.1.1
>+++ syscalls.cc 1999/01/03 22:16:21
>@@ -794,10 +794,14 @@ chown (const char * name, uid_t uid, gid
>                  BackupRead (hFile, NULL, 0, &bytes_read, TRUE, TRUE, &context);
>                  CloseHandle (hFile);
>
>+                 strcpy(abs_buf, username);
>+                 int retried = 0;
>+retry:
>+
>                  /* get sid for the new user */
>                  sid_len = 1024;
>                  domname_len = 100;
>-                 if (!LookupAccountName (NULL, username, psid_name,
>+                 if (!LookupAccountName (NULL, abs_buf, psid_name,
>                            &sid_len, domain_name, &domname_len, &acc_type))
>                    {
>                      __seterrno ();
>@@ -811,6 +815,16 @@ chown (const char * name, uid_t uid, gid
>                      return -1;
>                    }
>
>+                 if (acc_type != SidTypeUser
>+                     && ! retried
>+                     && domain_name && *domain_name)
>+                   {
>+                      __small_sprintf (abs_buf, "%s\\%s",
>+                                       domain_name, username);
>+                      retried = 1;
>+                      goto retry;
>+                   }
>+
>                  /* convert security descriptor to absolute format */
>                  if (!rel2abssd (psd, abs_psd, 1024))
>                    {
>

-- 
cgf AT cygnus DOT com
http://www.cygnus.com/

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019