* mkgroup.c (print_special_by_sid): Rename from print_special. Change

calls throughout.
	(print_special_by_name): New function.
	(main): Call print_special_by_name for TrustedInstaller account.
	* mkpasswd.c (print_special_by_sid): Rename from print_special.  Change
	calls throughout.
	(print_special_by_name): New function.
	(enum_std_accounts): Call print_special_by_name for TrustedInstaller
	account.
This commit is contained in:
Corinna Vinschen 2012-04-05 13:37:32 +00:00
parent b475fe5497
commit 036fb4772c
3 changed files with 71 additions and 14 deletions

View File

@ -1,3 +1,15 @@
2012-04-05 Corinna Vinschen <corinna@vinschen.de>
* mkgroup.c (print_special_by_sid): Rename from print_special. Change
calls throughout.
(print_special_by_name): New function.
(main): Call print_special_by_name for TrustedInstaller account.
* mkpasswd.c (print_special_by_sid): Rename from print_special. Change
calls throughout.
(print_special_by_name): New function.
(enum_std_accounts): Call print_special_by_name for TrustedInstaller
account.
2012-02-24 Yaakov Selkowitz <yselkowitz@users.sourceforge.net>
* pldd.c: Fix typo in license header.

View File

@ -1,7 +1,7 @@
/* mkgroup.c:
Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
2007, 2008, 2009, 2010, 2011 Red Hat, Inc.
2007, 2008, 2009, 2010, 2011, 2012 Red Hat, Inc.
This file is part of Cygwin.
@ -558,9 +558,9 @@ enum_groups (BOOL domain, domlist_t *dom_or_machine, const char *sep,
}
static void
print_special (PSID_IDENTIFIER_AUTHORITY auth, BYTE cnt,
DWORD sub1, DWORD sub2, DWORD sub3, DWORD sub4,
DWORD sub5, DWORD sub6, DWORD sub7, DWORD sub8)
print_special_by_sid (PSID_IDENTIFIER_AUTHORITY auth, BYTE cnt,
DWORD sub1, DWORD sub2, DWORD sub3, DWORD sub4,
DWORD sub5, DWORD sub6, DWORD sub7, DWORD sub8)
{
WCHAR grp[GNLEN + 1], dom[MAX_DOMAIN_NAME_LEN + 1];
DWORD glen, dlen, rid;
@ -597,6 +597,23 @@ print_special (PSID_IDENTIFIER_AUTHORITY auth, BYTE cnt,
}
}
static void
print_special_by_name (PCWSTR name, gid_t gid)
{
DWORD size = 256, dom_size = 256;
PSID sid = (PSID) alloca (size);
WCHAR dom[dom_size];
SID_NAME_USE use;
PWCHAR name_only = wcschr (name, L'\\');
if (name_only)
++name_only;
if (LookupAccountNameW (NULL, name, sid, &size, dom, &dom_size, &use))
printf ("%ls:%s:%lu:\n",
name_only ?: name, put_sid (sid), (unsigned long) gid);
}
static int
usage (FILE * stream)
{
@ -730,8 +747,8 @@ main (int argc, char **argv)
if (argc == 1)
{
print_special (&sid_nt_auth, 1, SECURITY_LOCAL_SYSTEM_RID,
0, 0, 0, 0, 0, 0, 0);
print_special_by_sid (&sid_nt_auth, 1, SECURITY_LOCAL_SYSTEM_RID,
0, 0, 0, 0, 0, 0, 0);
if (in_domain)
{
if (!enum_local_groups (TRUE, NULL, sep_char, id_offset,
@ -857,8 +874,11 @@ skip:
/* Get 'system' group */
if (!disp_groupname && print_system && print_builtin && print_domlist)
print_special (&sid_nt_auth, 1, SECURITY_LOCAL_SYSTEM_RID,
0, 0, 0, 0, 0, 0, 0);
{
print_special_by_sid (&sid_nt_auth, 1, SECURITY_LOCAL_SYSTEM_RID,
0, 0, 0, 0, 0, 0, 0);
print_special_by_name (L"NT SERVICE\\TrustedInstaller", -2);
}
off = id_offset;
for (i = 0; i < print_domlist; ++i)

View File

@ -1,7 +1,7 @@
/* mkpasswd.c:
Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2005, 2006,
2008, 2009, 2010, 2011 Red Hat, Inc.
2008, 2009, 2010, 2011, 2012 Red Hat, Inc.
This file is part of Cygwin.
@ -455,9 +455,9 @@ enum_users (BOOL domain, domlist_t *dom_or_machine, const char *sep,
}
static void
print_special (PSID_IDENTIFIER_AUTHORITY auth, BYTE cnt,
DWORD sub1, DWORD sub2, DWORD sub3, DWORD sub4,
DWORD sub5, DWORD sub6, DWORD sub7, DWORD sub8)
print_special_by_sid (PSID_IDENTIFIER_AUTHORITY auth, BYTE cnt,
DWORD sub1, DWORD sub2, DWORD sub3, DWORD sub4,
DWORD sub5, DWORD sub6, DWORD sub7, DWORD sub8)
{
WCHAR user[UNLEN + 1], dom[MAX_DOMAIN_NAME_LEN + 1];
DWORD len, len2, rid;
@ -580,6 +580,29 @@ print_version ()
strrchr (__DATE__, ' ') + 1);
}
static void
print_special_by_name (PCWSTR name, uid_t uid, gid_t gid)
{
DWORD size = 256, dom_size = 256;
PSID sid = (PSID) alloca (size);
WCHAR dom[dom_size];
SID_NAME_USE use;
PWCHAR name_only = wcschr (name, L'\\');
if (name_only)
++name_only;
if (LookupAccountNameW (NULL, name, sid, &size, dom, &dom_size, &use))
printf ("%ls:*:%lu:%lu:U-%ls%s%ls,%s::\n",
name_only ?: name,
(unsigned long) uid,
(unsigned long) gid,
name_only ? dom : L"",
name_only ? "\\" : "",
name_only ?: name,
put_sid (sid));
}
static void
enum_std_accounts ()
{
@ -588,8 +611,10 @@ enum_std_accounts ()
printf ("LocalService:*:19:544:U-NT AUTHORITY\\LocalService,S-1-5-19::\n");
printf ("NetworkService:*:20:544:U-NT AUTHORITY\\NetworkService,S-1-5-20::\n");
/* Get 'administrators' group (has localized name). */
print_special (&sid_nt_auth, 2, SECURITY_BUILTIN_DOMAIN_RID,
DOMAIN_ALIAS_RID_ADMINS, 0, 0, 0, 0, 0, 0);
print_special_by_sid (&sid_nt_auth, 2, SECURITY_BUILTIN_DOMAIN_RID,
DOMAIN_ALIAS_RID_ADMINS, 0, 0, 0, 0, 0, 0);
/* Fetch "TrustedInstaller" account starting with Vista. */
print_special_by_name (L"NT SERVICE\\TrustedInstaller", -2, -2);
}
static PPOLICY_PRIMARY_DOMAIN_INFO p_dom;