2003-04-10 Pierre Humblet <pierre.humblet@ieee.org>
* mkpasswd.c (current_user): print uid and gid as unsigned. (enum_users): Ditto. Do not free servername. (usage): Update to allow several domains and improve -p. (main): On Win9x limit uids to 1000. Only print specials when -l is specified. Add a loop to allow several domains and free servername in the loop. * mkgroup.c (enum_groups): Do not free servername. (usage): Update to allow several domains. Change uid to gid. (main): Only print specials when -l is specified. Add a loop to allow several domains and free servername in the loop.
This commit is contained in:
parent
6f48c0ae7a
commit
57efd527df
|
@ -1,3 +1,16 @@
|
||||||
|
2003-04-10 Pierre Humblet <pierre.humblet@ieee.org>
|
||||||
|
|
||||||
|
* mkpasswd.c (current_user): print uid and gid as unsigned.
|
||||||
|
(enum_users): Ditto. Do not free servername.
|
||||||
|
(usage): Update to allow several domains and improve -p.
|
||||||
|
(main): On Win9x limit uids to 1000. Only print specials
|
||||||
|
when -l is specified. Add a loop to allow several domains
|
||||||
|
and free servername in the loop.
|
||||||
|
* mkgroup.c (enum_groups): Do not free servername.
|
||||||
|
(usage): Update to allow several domains. Change uid to gid.
|
||||||
|
(main): Only print specials when -l is specified. Add a
|
||||||
|
loop to allow several domains and free servername in the loop.
|
||||||
|
|
||||||
2003-03-24 Christopher Faylor <cgf@redhat.com>
|
2003-03-24 Christopher Faylor <cgf@redhat.com>
|
||||||
|
|
||||||
* cygcheck.cc (dump_sysinfo): Ensure that CYGWIN environment variable
|
* cygcheck.cc (dump_sysinfo): Ensure that CYGWIN environment variable
|
||||||
|
|
|
@ -372,9 +372,6 @@ enum_groups (LPWSTR servername, int print_sids, int print_users, int id_offset)
|
||||||
|
|
||||||
}
|
}
|
||||||
while (rc == ERROR_MORE_DATA);
|
while (rc == ERROR_MORE_DATA);
|
||||||
|
|
||||||
if (servername)
|
|
||||||
netapibufferfree (servername);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -484,16 +481,15 @@ current_group (int print_sids, int print_users, int id_offset)
|
||||||
int
|
int
|
||||||
usage (FILE * stream, int isNT)
|
usage (FILE * stream, int isNT)
|
||||||
{
|
{
|
||||||
fprintf (stream, "Usage: mkgroup [OPTION]... [domain]\n\n"
|
fprintf (stream, "Usage: mkgroup [OPTION]... [domain]...\n\n"
|
||||||
"This program prints a /etc/group file to stdout\n\n"
|
"This program prints a /etc/group file to stdout\n\n"
|
||||||
"Options:\n");
|
"Options:\n");
|
||||||
if (isNT)
|
if (isNT)
|
||||||
fprintf (stream, " -l,--local print local group information\n"
|
fprintf (stream, " -l,--local print local group information\n"
|
||||||
" -c,--current print current group, if a domain account\n"
|
" -c,--current print current group, if a domain account\n"
|
||||||
" -d,--domain print global group information from the domain\n"
|
" -d,--domain print global group information (from current\n"
|
||||||
" specified (or from the current domain if there is\n"
|
" domain if no domains specified)\n"
|
||||||
" no domain specified)\n"
|
" -o,--id-offset offset change the default offset (10000) added to gids\n"
|
||||||
" -o,--id-offset offset change the default offset (10000) added to uids\n"
|
|
||||||
" in domain accounts.\n"
|
" in domain accounts.\n"
|
||||||
" -s,--no-sids don't print SIDs in pwd field\n"
|
" -s,--no-sids don't print SIDs in pwd field\n"
|
||||||
" (this affects ntsec)\n"
|
" (this affects ntsec)\n"
|
||||||
|
@ -629,7 +625,6 @@ main (int argc, char **argv)
|
||||||
"when `-d' is given.\n", argv[0]);
|
"when `-d' is given.\n", argv[0]);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
mbstowcs (domain_name, argv[optind], (strlen (argv[optind]) + 1));
|
|
||||||
domain_specified = 1;
|
domain_specified = 1;
|
||||||
}
|
}
|
||||||
if (!load_netapi ())
|
if (!load_netapi ())
|
||||||
|
@ -639,21 +634,13 @@ main (int argc, char **argv)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
|
||||||
/*
|
|
||||||
* Get `Everyone' group
|
|
||||||
*/
|
|
||||||
print_special (print_sids, &sid_world_auth, 1, SECURITY_WORLD_RID,
|
|
||||||
0, 0, 0, 0, 0, 0, 0);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Get `system' group
|
|
||||||
*/
|
|
||||||
print_special (print_sids, &sid_nt_auth, 1, SECURITY_LOCAL_SYSTEM_RID,
|
|
||||||
0, 0, 0, 0, 0, 0, 0);
|
|
||||||
if (print_local)
|
if (print_local)
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
|
* Get `system' group
|
||||||
|
*/
|
||||||
|
print_special (print_sids, &sid_nt_auth, 1, SECURITY_LOCAL_SYSTEM_RID,
|
||||||
|
0, 0, 0, 0, 0, 0, 0);
|
||||||
/*
|
/*
|
||||||
* Get `None' group
|
* Get `None' group
|
||||||
*/
|
*/
|
||||||
|
@ -696,27 +683,32 @@ main (int argc, char **argv)
|
||||||
0,
|
0,
|
||||||
0,
|
0,
|
||||||
0);
|
0);
|
||||||
|
|
||||||
|
enum_local_groups (print_sids, print_users);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
i = 1;
|
||||||
if (print_domain)
|
if (print_domain)
|
||||||
{
|
do
|
||||||
if (domain_specified)
|
{
|
||||||
rc = netgetdcname (NULL, domain_name, (LPBYTE *) & servername);
|
if (domain_specified)
|
||||||
|
{
|
||||||
|
mbstowcs (domain_name, argv[optind], (strlen (argv[optind]) + 1));
|
||||||
|
rc = netgetdcname (NULL, domain_name, (LPBYTE *) & servername);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
rc = netgetdcname (NULL, NULL, (LPBYTE *) & servername);
|
||||||
|
|
||||||
else
|
if (rc != ERROR_SUCCESS)
|
||||||
rc = netgetdcname (NULL, NULL, (LPBYTE *) & servername);
|
{
|
||||||
|
fprintf (stderr, "Cannot get PDC, code = %ld\n", rc);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
if (rc != ERROR_SUCCESS)
|
enum_groups (servername, print_sids, print_users, id_offset * i++);
|
||||||
{
|
netapibufferfree (servername);
|
||||||
fprintf (stderr, "Cannot get PDC, code = %ld\n", rc);
|
}
|
||||||
return 1;
|
while (++optind < argc);
|
||||||
}
|
|
||||||
|
|
||||||
enum_groups (servername, print_sids, print_users, id_offset);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (print_local)
|
|
||||||
enum_local_groups (print_sids, print_users);
|
|
||||||
|
|
||||||
if (print_current && !print_domain)
|
if (print_current && !print_domain)
|
||||||
current_group (print_sids, print_users, id_offset);
|
current_group (print_sids, print_users, id_offset);
|
||||||
|
|
|
@ -199,7 +199,7 @@ current_user (int print_sids, int print_cygpath,
|
||||||
strlcat (homedir_psx, envname, sizeof (homedir_psx));
|
strlcat (homedir_psx, envname, sizeof (homedir_psx));
|
||||||
}
|
}
|
||||||
|
|
||||||
printf ("%s:unused_by_nt/2000/xp:%d:%d:%s%s%s%s%s%s%s%s:%s:/bin/bash\n",
|
printf ("%s:unused_by_nt/2000/xp:%u:%u:%s%s%s%s%s%s%s%s:%s:/bin/bash\n",
|
||||||
envname,
|
envname,
|
||||||
uid + id_offset,
|
uid + id_offset,
|
||||||
gid + id_offset,
|
gid + id_offset,
|
||||||
|
@ -331,7 +331,7 @@ enum_users (LPWSTR servername, int print_sids, int print_cygpath,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
printf ("%s:unused_by_nt/2000/xp:%d:%d:%s%s%s%s%s%s%s%s:%s:/bin/bash\n",
|
printf ("%s:unused_by_nt/2000/xp:%u:%u:%s%s%s%s%s%s%s%s:%s:/bin/bash\n",
|
||||||
username,
|
username,
|
||||||
uid + id_offset,
|
uid + id_offset,
|
||||||
gid + id_offset,
|
gid + id_offset,
|
||||||
|
@ -351,9 +351,6 @@ enum_users (LPWSTR servername, int print_sids, int print_cygpath,
|
||||||
}
|
}
|
||||||
while (rc == ERROR_MORE_DATA);
|
while (rc == ERROR_MORE_DATA);
|
||||||
|
|
||||||
if (servername)
|
|
||||||
netapibufferfree (servername);
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -487,14 +484,14 @@ print_special (int print_sids,
|
||||||
int
|
int
|
||||||
usage (FILE * stream, int isNT)
|
usage (FILE * stream, int isNT)
|
||||||
{
|
{
|
||||||
fprintf (stream, "Usage: mkpasswd [OPTION]... [domain]\n\n"
|
fprintf (stream, "Usage: mkpasswd [OPTION]... [domain]...\n\n"
|
||||||
"This program prints a /etc/passwd file to stdout\n\n"
|
"This program prints a /etc/passwd file to stdout\n\n"
|
||||||
"Options:\n");
|
"Options:\n");
|
||||||
if (isNT)
|
if (isNT)
|
||||||
fprintf (stream, " -l,--local print local user accounts\n"
|
fprintf (stream, " -l,--local print local user accounts\n"
|
||||||
" -c,--current print current account, if a domain account\n"
|
" -c,--current print current account, if a domain account\n"
|
||||||
" -d,--domain print domain accounts (from current domain\n"
|
" -d,--domain print domain accounts (from current domain\n"
|
||||||
" if no domain specified)\n"
|
" if no domains specified)\n"
|
||||||
" -o,--id-offset offset change the default offset (10000) added to uids\n"
|
" -o,--id-offset offset change the default offset (10000) added to uids\n"
|
||||||
" in domain accounts.\n"
|
" in domain accounts.\n"
|
||||||
" -g,--local-groups print local group information too\n"
|
" -g,--local-groups print local group information too\n"
|
||||||
|
@ -502,7 +499,7 @@ usage (FILE * stream, int isNT)
|
||||||
" -m,--no-mount don't use mount points for home dir\n"
|
" -m,--no-mount don't use mount points for home dir\n"
|
||||||
" -s,--no-sids don't print SIDs in GCOS field\n"
|
" -s,--no-sids don't print SIDs in GCOS field\n"
|
||||||
" (this affects ntsec)\n");
|
" (this affects ntsec)\n");
|
||||||
fprintf (stream, " -p,--path-to-home path use specified path instead of user account home dir\n"
|
fprintf (stream, " -p,--path-to-home path use specified path and not user account home dir or /home\n"
|
||||||
" -u,--username username only return information for the specified user\n"
|
" -u,--username username only return information for the specified user\n"
|
||||||
" -h,--help displays this message\n"
|
" -h,--help displays this message\n"
|
||||||
" -v,--version version information and exit\n\n");
|
" -v,--version version information and exit\n\n");
|
||||||
|
@ -649,7 +646,7 @@ main (int argc, char **argv)
|
||||||
unsigned long uid = 0, i;
|
unsigned long uid = 0, i;
|
||||||
for (i = 0; disp_username[i]; i++)
|
for (i = 0; disp_username[i]; i++)
|
||||||
uid += toupper (disp_username[i]) << ((6 * i) % 25);
|
uid += toupper (disp_username[i]) << ((6 * i) % 25);
|
||||||
uid = (uid % (65535 - DOMAIN_USER_RID_ADMIN - 1))
|
uid = (uid % (1000 - DOMAIN_USER_RID_ADMIN - 1))
|
||||||
+ DOMAIN_USER_RID_ADMIN + 1;
|
+ DOMAIN_USER_RID_ADMIN + 1;
|
||||||
|
|
||||||
printf ("%s:use_crypt:%lu:%lu:%s:%s%s:/bin/bash\n",
|
printf ("%s:use_crypt:%lu:%lu:%s:%s%s:/bin/bash\n",
|
||||||
|
@ -675,7 +672,6 @@ main (int argc, char **argv)
|
||||||
"when `-d' is given.\n", argv[0]);
|
"when `-d' is given.\n", argv[0]);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
mbstowcs (domain_name, argv[optind], (strlen (argv[optind]) + 1));
|
|
||||||
domain_name_specified = 1;
|
domain_name_specified = 1;
|
||||||
}
|
}
|
||||||
if (!load_netapi ())
|
if (!load_netapi ())
|
||||||
|
@ -686,57 +682,62 @@ main (int argc, char **argv)
|
||||||
|
|
||||||
if (disp_username == NULL)
|
if (disp_username == NULL)
|
||||||
{
|
{
|
||||||
|
if (print_local)
|
||||||
|
{
|
||||||
#if 0
|
#if 0
|
||||||
/*
|
/*
|
||||||
* Get `Everyone' group
|
* Get `Everyone' group
|
||||||
*/
|
*/
|
||||||
print_special (print_sids, &sid_world_auth, 1, SECURITY_WORLD_RID,
|
print_special (print_sids, &sid_world_auth, 1, SECURITY_WORLD_RID,
|
||||||
0, 0, 0, 0, 0, 0, 0);
|
0, 0, 0, 0, 0, 0, 0);
|
||||||
#endif
|
#endif
|
||||||
/*
|
/*
|
||||||
* Get `system' group
|
* Get `system' group
|
||||||
*/
|
*/
|
||||||
print_special (print_sids, &sid_nt_auth, 1, SECURITY_LOCAL_SYSTEM_RID,
|
print_special (print_sids, &sid_nt_auth, 1, SECURITY_LOCAL_SYSTEM_RID,
|
||||||
0, 0, 0, 0, 0, 0, 0);
|
0, 0, 0, 0, 0, 0, 0);
|
||||||
/*
|
/*
|
||||||
* Get `administrators' group
|
* Get `administrators' group
|
||||||
*/
|
*/
|
||||||
if (!print_local_groups)
|
if (!print_local_groups)
|
||||||
print_special (print_sids, &sid_nt_auth, 2, SECURITY_BUILTIN_DOMAIN_RID,
|
print_special (print_sids, &sid_nt_auth, 2, SECURITY_BUILTIN_DOMAIN_RID,
|
||||||
DOMAIN_ALIAS_RID_ADMINS, 0, 0, 0, 0, 0, 0);
|
DOMAIN_ALIAS_RID_ADMINS, 0, 0, 0, 0, 0, 0);
|
||||||
|
}
|
||||||
if (print_local_groups)
|
if (print_local_groups)
|
||||||
enum_local_groups (print_sids);
|
enum_local_groups (print_sids);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (print_domain)
|
|
||||||
{
|
|
||||||
if (domain_name_specified)
|
|
||||||
rc = netgetdcname (NULL, domain_name, (LPBYTE *) & servername);
|
|
||||||
|
|
||||||
else
|
|
||||||
rc = netgetdcname (NULL, NULL, (LPBYTE *) & servername);
|
|
||||||
|
|
||||||
if (rc != ERROR_SUCCESS)
|
|
||||||
{
|
|
||||||
print_win_error(rc);
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
enum_users (servername, print_sids, print_cygpath, passed_home_path,
|
|
||||||
id_offset, disp_username);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (print_local)
|
if (print_local)
|
||||||
enum_users (NULL, print_sids, print_cygpath, passed_home_path, 0,
|
enum_users (NULL, print_sids, print_cygpath, passed_home_path, 0,
|
||||||
disp_username);
|
disp_username);
|
||||||
|
|
||||||
|
i = 1;
|
||||||
|
if (print_domain)
|
||||||
|
do
|
||||||
|
{
|
||||||
|
if (domain_name_specified)
|
||||||
|
{
|
||||||
|
mbstowcs (domain_name, argv[optind], (strlen (argv[optind]) + 1));
|
||||||
|
rc = netgetdcname (NULL, domain_name, (LPBYTE *) & servername);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
rc = netgetdcname (NULL, NULL, (LPBYTE *) & servername);
|
||||||
|
|
||||||
|
if (rc != ERROR_SUCCESS)
|
||||||
|
{
|
||||||
|
print_win_error(rc);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
enum_users (servername, print_sids, print_cygpath, passed_home_path,
|
||||||
|
id_offset * i++, disp_username);
|
||||||
|
netapibufferfree (servername);
|
||||||
|
}
|
||||||
|
while (++optind < argc);
|
||||||
|
|
||||||
if (print_current && !print_domain)
|
if (print_current && !print_domain)
|
||||||
current_user(print_sids, print_cygpath, passed_home_path,
|
current_user(print_sids, print_cygpath, passed_home_path,
|
||||||
id_offset, disp_username);
|
id_offset, disp_username);
|
||||||
|
|
||||||
if (servername)
|
|
||||||
netapibufferfree (servername);
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue