diff options
-rw-r--r-- | doc/format-specifiers.txt | 9 | ||||
-rw-r--r-- | src/format.c | 287 | ||||
-rwxr-xr-x | tests/test35-schema-dribble/after.sh | 2 | ||||
-rw-r--r-- | tests/test35-schema-dribble/after.txt | 22 | ||||
-rwxr-xr-x | tests/test35-schema-dribble/before.sh | 2 | ||||
-rw-r--r-- | tests/test35-schema-dribble/before.txt | 20 | ||||
-rwxr-xr-x | tests/test35-schema-dribble/change.sh | 11 | ||||
-rw-r--r-- | tests/test35-schema-dribble/change.txt | 2 | ||||
-rw-r--r-- | tests/test35-schema-dribble/description.txt | 1 | ||||
-rw-r--r-- | tests/test35-schema-dribble/dse.ldif | 14 | ||||
-rw-r--r-- | tests/test35-schema-dribble/plugin-process-all.txt | 1 | ||||
-rw-r--r-- | tests/test35-schema-dribble/userRoot.ldif | 1531 |
12 files changed, 1901 insertions, 1 deletions
diff --git a/doc/format-specifiers.txt b/doc/format-specifiers.txt index 7dca9db..8919d7a 100644 --- a/doc/format-specifiers.txt +++ b/doc/format-specifiers.txt @@ -621,3 +621,12 @@ And here's how an example expression evaluates for ''cn=group'': %default("%{member}","jim") -> (uid=bob,uid=pete) %default("%{membername}","bob") -> (jim) %default("%{nosuchvalue}","bob") -> (bob) + +=== sort === + + sort(''EXPRESSION'') + +Evaluates ''EXPRESSION'', returning its values if any are produced, sorted by +binary value. This is more useful for ensuring consistency than prettiness, +as the sorting is not case-aware and doesn't recognize numbers. + diff --git a/src/format.c b/src/format.c index aaa7f57..9ee2444 100644 --- a/src/format.c +++ b/src/format.c @@ -1,5 +1,5 @@ /* - * Copyright 2008,2010,2011,2012 Red Hat, Inc. + * Copyright 2008,2010,2011,2012,2013 Red Hat, Inc. * * This Program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -2752,6 +2752,135 @@ format_default(struct plugin_state *state, Slapi_PBlock *pb, Slapi_Entry *e, return ret; } +/* Evaluate the one list, and sort it. */ +static int +format_compare_bv(const void *p1, const void *p2) +{ + const struct berval * const *v1 = p1, * const *v2 = p2; + const struct berval *bv1 = *v1, *bv2 = *v2; + int initial, c; + + if (bv1->bv_len == bv2->bv_len) { + return memcmp(bv1->bv_val, bv2->bv_val, bv1->bv_len); + } else { + initial = MIN(bv1->bv_len, bv2->bv_len); + c = memcmp(bv1->bv_val, bv2->bv_val, initial); + if (c != 0) { + return c; + } + if (bv1->bv_val < bv2->bv_val) { + return -1; + } + if (bv1->bv_val > bv2->bv_val) { + return 1; + } + } + return 0; +} + +static int +format_sort(struct plugin_state *state, Slapi_PBlock *pb, Slapi_Entry *e, + const char *group, const char *set, + const char *args, const char *disallowed, + char *outbuf, int outbuf_len, + struct format_choice **outbuf_choices, + char ***rel_attrs, char ***ref_attrs, + struct format_inref_attr ***inref_attrs, + struct format_ref_attr_list ***ref_attr_list, + struct format_ref_attr_list ***inref_attr_list) +{ + int ret, argc, i; + unsigned int *lengths; + char **argv, **values; + struct berval bv, **choices; + + ret = format_parse_args(state, args, &argc, &argv); + if (ret != 0) { + slapi_log_error(SLAPI_LOG_PLUGIN, state->plugin_desc->spd_id, + "sort: error parsing arguments\n"); + return -EINVAL; + } + if (argc < 1) { + slapi_log_error(SLAPI_LOG_PLUGIN, state->plugin_desc->spd_id, + "sort: one argument is required\n"); + format_free_parsed_args(argv); + return -EINVAL; + } + if (argc > 1) { + slapi_log_error(SLAPI_LOG_PLUGIN, state->plugin_desc->spd_id, + "sort: only one argument is allowed\n"); + format_free_parsed_args(argv); + return -EINVAL; + } + if (outbuf_choices == NULL) { + slapi_log_error(SLAPI_LOG_PLUGIN, state->plugin_desc->spd_id, + "sort: returns a list, but a list " + "would not be appropriate\n"); + format_free_parsed_args(argv); + return -EINVAL; + } + + /* Evaluate this argument. */ + choices = NULL; + values = format_get_data_set(state, pb, e, group, set, + argv[0], disallowed, + rel_attrs, ref_attrs, inref_attrs, + ref_attr_list, inref_attr_list, + &lengths); + if (values != NULL) { + /* Walk the list of values. */ + for (i = 0; values[i] != NULL; i++) { + /* Add it to the list. */ + bv.bv_val = values[i]; + bv.bv_len = lengths[i]; + slapi_log_error(SLAPI_LOG_PLUGIN, + state->plugin_desc->spd_id, + "sort: input %d = \"%.*s\"\n", + i + 1, (int) bv.bv_len, bv.bv_val); + format_add_bv_list(&choices, &bv); + } + slapi_log_error(SLAPI_LOG_PLUGIN, + state->plugin_desc->spd_id, + "sort: expanded \"%s\" to produce " + "%d values for \"%s\"\n", argv[0], i, + slapi_entry_get_dn(e)); + format_free_data_set(values, lengths); + } else { + slapi_log_error(SLAPI_LOG_PLUGIN, + state->plugin_desc->spd_id, + "sort: expanding \"%s\" produced " + "no values for \"%s\"\n", argv[0], + slapi_entry_get_dn(e)); + i = 0; + } + + if (choices != NULL) { + qsort(choices, i, sizeof(choices[0]), format_compare_bv); + for (i = 0; choices[i] != NULL; i++) { + slapi_log_error(SLAPI_LOG_PLUGIN, + state->plugin_desc->spd_id, + "sort: returning \"%.*s\" as a " + "value for \"%s\"\n", + (int) choices[i]->bv_len, + choices[i]->bv_val, + slapi_entry_get_dn(e)); + continue; + } + slapi_log_error(SLAPI_LOG_PLUGIN, + state->plugin_desc->spd_id, + "sort: returning %d values for \"%s\"\n", i, + slapi_entry_get_dn(e)); + format_add_choice(outbuf_choices, outbuf, &choices); + ret = 0; + } else { + ret = -ENOENT; + } + + format_free_parsed_args(argv); + + return ret; +} + /* Evaluate all of the arguments, and concatentate all of the lists of results * to produce one long list. */ static int @@ -3243,6 +3372,160 @@ format_internal_sequence_number(struct plugin_state *state, return ret; } +/* Condense the list as much as possible, but possibly still produce multiple + * values. */ +static int +format_dribble_merge(struct plugin_state *state, Slapi_PBlock *pb, + Slapi_Entry *e, + const char *group, const char *set, + const char *args, const char *disallowed, + char *outbuf, int outbuf_len, + struct format_choice **outbuf_choices, + char ***rel_attrs, + char ***ref_attrs, + struct format_inref_attr ***inref_attrs, + struct format_ref_attr_list ***ref_attr_list, + struct format_ref_attr_list ***inref_attr_list) +{ + int ret, i, j, argc, slen, count, buf_used = 0; + unsigned int *lengths, max; + char **argv, **values; + const char *sep; + char *buf = NULL; + struct berval **choices, bv; + + ret = format_parse_args(state, args, &argc, &argv); + if (ret != 0) { + slapi_log_error(SLAPI_LOG_PLUGIN, state->plugin_desc->spd_id, + "dribble_merge: error parsing arguments\n"); + return -EINVAL; + } + if (argc < 2) { + slapi_log_error(SLAPI_LOG_PLUGIN, state->plugin_desc->spd_id, + "dribble_merge: requires at least " + "two arguments\n"); + format_free_parsed_args(argv); + return -EINVAL; + } + max = atoi(argv[0]); + if (max < 1) { + slapi_log_error(SLAPI_LOG_PLUGIN, state->plugin_desc->spd_id, + "dribble_merge: small maximum group size\n"); + format_free_parsed_args(argv); + return -EINVAL; + } + sep = argv[1]; + slen = strlen(sep); + choices = NULL; + if (outbuf_choices == NULL) { + slapi_log_error(SLAPI_LOG_PLUGIN, state->plugin_desc->spd_id, + "dribble_merge: returns a list, but a list " + "would not be appropriate\n"); + format_free_parsed_args(argv); + return -EINVAL; + } + for (i = 2, ret = 0, count = 0; i < argc; i++) { + /* Expand this argument. */ + slapi_log_error(SLAPI_LOG_PLUGIN, state->plugin_desc->spd_id, + "dribble_merge: expanding ->%s<-\n", argv[i]); + values = format_get_data_set(state, pb, e, group, set, + argv[i], disallowed, + rel_attrs, ref_attrs, inref_attrs, + ref_attr_list, inref_attr_list, + &lengths); + if (values == NULL) { + slapi_log_error(SLAPI_LOG_PLUGIN, + state->plugin_desc->spd_id, + "dribble_merge: no values for " + "->%s<-\n", argv[i]); + continue; + } + for (j = 0; values[j] != NULL; j++) { + /* Check if this is the first subset, or if there's + * space for this value in a subset that we're + * currently working on filling. */ + if ((buf == NULL) || + (buf_used + lengths[j] + slen > max)) { + if (buf_used > 0) { + /* Add the old subset. */ + bv.bv_val = buf; + bv.bv_len = buf_used; + format_add_bv_list(&choices, &bv); + } + /* Allocate space for the next subset. */ + buf = malloc(max); + buf_used = 0; + count = 0; + if (buf == NULL) { + format_free_bv_list(choices); + format_free_data_set(values, lengths); + format_free_parsed_args(argv); + return -ENOMEM; + } + } + /* If the value's just too big, return an error. */ + if (lengths[j] > max) { + slapi_log_error(SLAPI_LOG_PLUGIN, + state->plugin_desc->spd_id, + "dribble_merge: value \"%.*s\"" + " was too big for ->%s<\n", + lengths[j], values[j], + argv[i]); + format_free_bv_list(choices); + format_free_data_set(values, lengths); + format_free_parsed_args(argv); + free(buf); + return -ENOBUFS; + } else { + /* Log this value. */ + slapi_log_error(SLAPI_LOG_PLUGIN, + state->plugin_desc->spd_id, + "dribble_merge: got %d-byte " + "value for ->%s<\n", + lengths[j], argv[i]); + } + /* If this isn't the first result, fill in the + * separator. Then fill in the value. */ + if (count > 0) { + memcpy(buf + buf_used, sep, slen); + buf_used += slen; + } + memcpy(buf + buf_used, values[j], lengths[j]); + buf_used += lengths[j]; + count++; + } + format_free_data_set(values, lengths); + } + /* Grab any leftovers. */ + if (buf_used > 0) { + bv.bv_val = buf; + bv.bv_len = buf_used; + format_add_bv_list(&choices, &bv); + } + format_free_parsed_args(argv); + if (choices != NULL) { + for (i = 0; choices[i] != NULL; i++) { + slapi_log_error(SLAPI_LOG_PLUGIN, + state->plugin_desc->spd_id, + "dribble_merge: returning \"%.*s\" " + "as a value for \"%s\"\n", + (int) choices[i]->bv_len, + choices[i]->bv_val, + slapi_entry_get_dn(e)); + continue; + } + slapi_log_error(SLAPI_LOG_PLUGIN, + state->plugin_desc->spd_id, + "dribble_merge: returning %d values for " + "\"%s\"\n", i, slapi_entry_get_dn(e)); + format_add_choice(outbuf_choices, outbuf, &choices); + ret = 0; + } else { + ret = -ENOENT; + } + return ret; +} + /* Choose a formatting function by name. */ static void * format_lookup_fn(const char *fnname) @@ -3287,6 +3570,8 @@ format_lookup_fn(const char *fnname) {"link", format_link}, {"unique", format_unique}, {"internal_sequence_number", format_internal_sequence_number}, + {"dribble_merge", format_dribble_merge}, + {"sort", format_sort}, }; for (i = 0; i < sizeof(fns) / sizeof(fns[0]); i++) { if ((fns[i].name != NULL) && diff --git a/tests/test35-schema-dribble/after.sh b/tests/test35-schema-dribble/after.sh new file mode 100755 index 0000000..92bc3e2 --- /dev/null +++ b/tests/test35-schema-dribble/after.sh @@ -0,0 +1,2 @@ +#!/bin/sh +search -b cn=compat,cn=accounts,dc=example,dc=com dn memberUids | $LDIFSORT diff --git a/tests/test35-schema-dribble/after.txt b/tests/test35-schema-dribble/after.txt new file mode 100644 index 0000000..8cedd47 --- /dev/null +++ b/tests/test35-schema-dribble/after.txt @@ -0,0 +1,22 @@ +dn: cn=compat,cn=accounts,dc=example,dc=com + +dn: cn=g1,ou=group,cn=compat,cn=accounts,dc=example,dc=com +memberUids: tuser15,tuser16,tuser17,tuser18,tuser19,tuser90,tuser91,tuser92,tu + ser93,tuser94,tuser95,tuser96,tuser97,tuser98,tuser99 + +dn: cn=g2,ou=group,cn=compat,cn=accounts,dc=example,dc=com +memberUids: tuser10,tuser11,tuser12,tuser13,tuser14,tuser15,tuser16,tuser17,tu + ser18,tuser19,tuser20,tuser21,tuser22,tuser23,tuser24,tuser25 +memberUids: tuser26,tuser27,tuser28,tuser29,tuser30,tuser31,tuser32,tuser33,tu + ser34,tuser35,tuser36,tuser37,tuser38,tuser39,tuser40,tuser41 +memberUids: tuser42,tuser43,tuser44,tuser45,tuser46,tuser47,tuser48,tuser49,tu + ser50,tuser51,tuser52,tuser53,tuser54,tuser55,tuser56,tuser57 +memberUids: tuser58,tuser59,tuser60,tuser61,tuser62,tuser63,tuser64,tuser65,tu + ser66,tuser67,tuser68,tuser69,tuser70,tuser71,tuser72,tuser73 +memberUids: tuser74,tuser75,tuser76,tuser77,tuser78,tuser79,tuser80,tuser81,tu + ser82,tuser83,tuser84,tuser85,tuser86,tuser87,tuser88,tuser89 +memberUids: tuser90,tuser91,tuser92,tuser93,tuser94,tuser95,tuser96,tuser97,tu + ser98,tuser99 + +dn: ou=group,cn=compat,cn=accounts,dc=example,dc=com + diff --git a/tests/test35-schema-dribble/before.sh b/tests/test35-schema-dribble/before.sh new file mode 100755 index 0000000..92bc3e2 --- /dev/null +++ b/tests/test35-schema-dribble/before.sh @@ -0,0 +1,2 @@ +#!/bin/sh +search -b cn=compat,cn=accounts,dc=example,dc=com dn memberUids | $LDIFSORT diff --git a/tests/test35-schema-dribble/before.txt b/tests/test35-schema-dribble/before.txt new file mode 100644 index 0000000..e6e95ae --- /dev/null +++ b/tests/test35-schema-dribble/before.txt @@ -0,0 +1,20 @@ +dn: cn=compat,cn=accounts,dc=example,dc=com + +dn: cn=g1,ou=group,cn=compat,cn=accounts,dc=example,dc=com +memberUids: tuser15,tuser16,tuser17,tuser18,tuser19,tuser90,tuser91,tuser92,tu + ser93,tuser94,tuser95,tuser96,tuser97,tuser98,tuser99 + +dn: cn=g2,ou=group,cn=compat,cn=accounts,dc=example,dc=com +memberUids: tuser10,tuser11,tuser12,tuser13,tuser14,tuser20,tuser21,tuser22,tu + ser23,tuser24,tuser25,tuser26,tuser27,tuser28,tuser29,tuser30 +memberUids: tuser31,tuser32,tuser33,tuser34,tuser35,tuser36,tuser37,tuser38,tu + ser39,tuser40,tuser41,tuser42,tuser43,tuser44,tuser45,tuser46 +memberUids: tuser47,tuser48,tuser49,tuser50,tuser51,tuser52,tuser53,tuser54,tu + ser55,tuser56,tuser57,tuser58,tuser59,tuser60,tuser61,tuser62 +memberUids: tuser63,tuser64,tuser65,tuser66,tuser67,tuser68,tuser69,tuser70,tu + ser71,tuser72,tuser73,tuser74,tuser75,tuser76,tuser77,tuser78 +memberUids: tuser79,tuser80,tuser81,tuser82,tuser83,tuser84,tuser85,tuser86,tu + ser87,tuser88,tuser89 + +dn: ou=group,cn=compat,cn=accounts,dc=example,dc=com + diff --git a/tests/test35-schema-dribble/change.sh b/tests/test35-schema-dribble/change.sh new file mode 100755 index 0000000..ee6859f --- /dev/null +++ b/tests/test35-schema-dribble/change.sh @@ -0,0 +1,11 @@ +#!/bin/sh +modify << EOF +dn: cn=g2,cn=groups,cn=accounts,dc=example,dc=com +changetype: modify +add: member +member: cn=g1,cn=groups,cn=accounts,dc=example,dc=com +- + +EOF +# give memberOf a few seconds to catch up +sleep 10 diff --git a/tests/test35-schema-dribble/change.txt b/tests/test35-schema-dribble/change.txt new file mode 100644 index 0000000..f8ae3a0 --- /dev/null +++ b/tests/test35-schema-dribble/change.txt @@ -0,0 +1,2 @@ +modifying entry "cn=g2,cn=groups,cn=accounts,dc=example,dc=com" + diff --git a/tests/test35-schema-dribble/description.txt b/tests/test35-schema-dribble/description.txt new file mode 100644 index 0000000..cf34895 --- /dev/null +++ b/tests/test35-schema-dribble/description.txt @@ -0,0 +1 @@ +dribble_merge basic function test diff --git a/tests/test35-schema-dribble/dse.ldif b/tests/test35-schema-dribble/dse.ldif new file mode 100644 index 0000000..965bd7e --- /dev/null +++ b/tests/test35-schema-dribble/dse.ldif @@ -0,0 +1,14 @@ +dn: cn=compat-group,cn=Schema Compatibility,cn=plugins,cn=config +objectClass: top +objectClass: extensibleObject +cn: compat-group +schema-compat-container-group: cn=compat,cn=accounts,dc=example,dc=com +schema-compat-container-rdn: ou=group +schema-compat-check-access: yes +schema-compat-search-base: cn=groups,cn=Accounts,dc=example,dc=com +schema-compat-search-filter: (objectClass=posixGroup) +schema-compat-entry-rdn: cn=%{cn} +schema-compat-entry-attribute: objectclass=extensibleObject +schema-compat-entry-attribute: memberUids=%dribble_merge("128",",","%sort(\"%deref_r(\\\"member\\\",\\\"uid\\\")\")") +schema-compat-entry-attribute: gidNumber=%{gidNumber} + diff --git a/tests/test35-schema-dribble/plugin-process-all.txt b/tests/test35-schema-dribble/plugin-process-all.txt new file mode 100644 index 0000000..fc7b80d --- /dev/null +++ b/tests/test35-schema-dribble/plugin-process-all.txt @@ -0,0 +1 @@ +verifying that we get called diff --git a/tests/test35-schema-dribble/userRoot.ldif b/tests/test35-schema-dribble/userRoot.ldif new file mode 100644 index 0000000..c56ee16 --- /dev/null +++ b/tests/test35-schema-dribble/userRoot.ldif @@ -0,0 +1,1531 @@ +# users, accounts, example.com +dn: cn=users,cn=accounts,dc=example,dc=com +objectClass: top +objectClass: nsContainer +cn: users + +# groups, accounts, example.com +dn: cn=groups,cn=accounts,dc=example,dc=com +objectClass: top +objectClass: nsContainer +cn: groups + +# managed-groups, accounts, example.com +dn: cn=managed-groups,cn=accounts,dc=example,dc=com +objectClass: top +objectClass: nsContainer +cn: groups + +# tuser1, users, accounts, example.com +dn: uid=tuser1,cn=users,cn=accounts,dc=example,dc=com +uid: tuser1 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1003 +gecos: tuser1 +sn: User +homeDirectory: /home/tuser1 +cn: Tim User +uidNumber: 1101 + +# tuser2, users, accounts, example.com +dn: uid=tuser2,cn=users,cn=accounts,dc=example,dc=com +uid: tuser2 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser2 +sn: User +homeDirectory: /home/tuser2 +cn: Timmy User +uidNumber: 1102 + +# tuser3, users, accounts, example.com +dn: uid=tuser3,cn=users,cn=accounts,dc=example,dc=com +uid: tuser3 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser3 +sn: User +homeDirectory: /home/tuser3 +cn: Timothy User +uidNumber: 1103 + +dn: uid=tuser4,cn=users,cn=accounts,dc=example,dc=com +uid: tuser4 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser4 +sn: User +homeDirectory: /home/tuser4 +cn: Timothy User +uidNumber: 1104 + +dn: uid=tuser5,cn=users,cn=accounts,dc=example,dc=com +uid: tuser5 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser5 +sn: User +homeDirectory: /home/tuser5 +cn: Timothy User +uidNumber: 1105 + +dn: uid=tuser6,cn=users,cn=accounts,dc=example,dc=com +uid: tuser6 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser6 +sn: User +homeDirectory: /home/tuser6 +cn: Timothy User +uidNumber: 1106 + +dn: uid=tuser7,cn=users,cn=accounts,dc=example,dc=com +uid: tuser7 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser7 +sn: User +homeDirectory: /home/tuser7 +cn: Timothy User +uidNumber: 1107 + +dn: uid=tuser8,cn=users,cn=accounts,dc=example,dc=com +uid: tuser8 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser8 +sn: User +homeDirectory: /home/tuser8 +cn: Timothy User +uidNumber: 1108 + +dn: uid=tuser9,cn=users,cn=accounts,dc=example,dc=com +uid: tuser9 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser9 +sn: User +homeDirectory: /home/tuser9 +cn: Timothy User +uidNumber: 1109 + +dn: uid=tuser10,cn=users,cn=accounts,dc=example,dc=com +uid: tuser10 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser10 +sn: User +homeDirectory: /home/tuser10 +cn: Timothy User +uidNumber: 11010 + +dn: uid=tuser11,cn=users,cn=accounts,dc=example,dc=com +uid: tuser11 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser11 +sn: User +homeDirectory: /home/tuser11 +cn: Timothy User +uidNumber: 11011 + +dn: uid=tuser12,cn=users,cn=accounts,dc=example,dc=com +uid: tuser12 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser12 +sn: User +homeDirectory: /home/tuser12 +cn: Timothy User +uidNumber: 11012 + +dn: uid=tuser13,cn=users,cn=accounts,dc=example,dc=com +uid: tuser13 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser13 +sn: User +homeDirectory: /home/tuser13 +cn: Timothy User +uidNumber: 11013 + +dn: uid=tuser14,cn=users,cn=accounts,dc=example,dc=com +uid: tuser14 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser14 +sn: User +homeDirectory: /home/tuser14 +cn: Timothy User +uidNumber: 11014 + +dn: uid=tuser15,cn=users,cn=accounts,dc=example,dc=com +uid: tuser15 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser15 +sn: User +homeDirectory: /home/tuser15 +cn: Timothy User +uidNumber: 11015 + +dn: uid=tuser16,cn=users,cn=accounts,dc=example,dc=com +uid: tuser16 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser16 +sn: User +homeDirectory: /home/tuser16 +cn: Timothy User +uidNumber: 11016 + +dn: uid=tuser17,cn=users,cn=accounts,dc=example,dc=com +uid: tuser17 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser17 +sn: User +homeDirectory: /home/tuser17 +cn: Timothy User +uidNumber: 11017 + +dn: uid=tuser18,cn=users,cn=accounts,dc=example,dc=com +uid: tuser18 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser18 +sn: User +homeDirectory: /home/tuser18 +cn: Timothy User +uidNumber: 11018 + +dn: uid=tuser19,cn=users,cn=accounts,dc=example,dc=com +uid: tuser19 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser19 +sn: User +homeDirectory: /home/tuser19 +cn: Timothy User +uidNumber: 11019 + +dn: uid=tuser20,cn=users,cn=accounts,dc=example,dc=com +uid: tuser20 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser20 +sn: User +homeDirectory: /home/tuser20 +cn: Timothy User +uidNumber: 11020 + +dn: uid=tuser21,cn=users,cn=accounts,dc=example,dc=com +uid: tuser21 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser21 +sn: User +homeDirectory: /home/tuser21 +cn: Timothy User +uidNumber: 11021 + +dn: uid=tuser22,cn=users,cn=accounts,dc=example,dc=com +uid: tuser22 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser22 +sn: User +homeDirectory: /home/tuser22 +cn: Timothy User +uidNumber: 11022 + +dn: uid=tuser23,cn=users,cn=accounts,dc=example,dc=com +uid: tuser23 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser23 +sn: User +homeDirectory: /home/tuser23 +cn: Timothy User +uidNumber: 11023 + +dn: uid=tuser24,cn=users,cn=accounts,dc=example,dc=com +uid: tuser24 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser24 +sn: User +homeDirectory: /home/tuser24 +cn: Timothy User +uidNumber: 11024 + +dn: uid=tuser25,cn=users,cn=accounts,dc=example,dc=com +uid: tuser25 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser25 +sn: User +homeDirectory: /home/tuser25 +cn: Timothy User +uidNumber: 11025 + +dn: uid=tuser26,cn=users,cn=accounts,dc=example,dc=com +uid: tuser26 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser26 +sn: User +homeDirectory: /home/tuser26 +cn: Timothy User +uidNumber: 11026 + +dn: uid=tuser27,cn=users,cn=accounts,dc=example,dc=com +uid: tuser27 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser27 +sn: User +homeDirectory: /home/tuser27 +cn: Timothy User +uidNumber: 11027 + +dn: uid=tuser28,cn=users,cn=accounts,dc=example,dc=com +uid: tuser28 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser28 +sn: User +homeDirectory: /home/tuser28 +cn: Timothy User +uidNumber: 11028 + +dn: uid=tuser29,cn=users,cn=accounts,dc=example,dc=com +uid: tuser29 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser29 +sn: User +homeDirectory: /home/tuser29 +cn: Timothy User +uidNumber: 11029 + +dn: uid=tuser30,cn=users,cn=accounts,dc=example,dc=com +uid: tuser30 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser30 +sn: User +homeDirectory: /home/tuser30 +cn: Timothy User +uidNumber: 11030 + +dn: uid=tuser31,cn=users,cn=accounts,dc=example,dc=com +uid: tuser31 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser31 +sn: User +homeDirectory: /home/tuser31 +cn: Timothy User +uidNumber: 11031 + +dn: uid=tuser32,cn=users,cn=accounts,dc=example,dc=com +uid: tuser32 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser32 +sn: User +homeDirectory: /home/tuser32 +cn: Timothy User +uidNumber: 11032 + +dn: uid=tuser33,cn=users,cn=accounts,dc=example,dc=com +uid: tuser33 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser33 +sn: User +homeDirectory: /home/tuser33 +cn: Timothy User +uidNumber: 11033 + +dn: uid=tuser34,cn=users,cn=accounts,dc=example,dc=com +uid: tuser34 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser34 +sn: User +homeDirectory: /home/tuser34 +cn: Timothy User +uidNumber: 11034 + +dn: uid=tuser35,cn=users,cn=accounts,dc=example,dc=com +uid: tuser35 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser35 +sn: User +homeDirectory: /home/tuser35 +cn: Timothy User +uidNumber: 11035 + +dn: uid=tuser36,cn=users,cn=accounts,dc=example,dc=com +uid: tuser36 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser36 +sn: User +homeDirectory: /home/tuser36 +cn: Timothy User +uidNumber: 11036 + +dn: uid=tuser37,cn=users,cn=accounts,dc=example,dc=com +uid: tuser37 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser37 +sn: User +homeDirectory: /home/tuser37 +cn: Timothy User +uidNumber: 11037 + +dn: uid=tuser38,cn=users,cn=accounts,dc=example,dc=com +uid: tuser38 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser38 +sn: User +homeDirectory: /home/tuser38 +cn: Timothy User +uidNumber: 11038 + +dn: uid=tuser39,cn=users,cn=accounts,dc=example,dc=com +uid: tuser39 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser39 +sn: User +homeDirectory: /home/tuser39 +cn: Timothy User +uidNumber: 11039 + +dn: uid=tuser40,cn=users,cn=accounts,dc=example,dc=com +uid: tuser40 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser40 +sn: User +homeDirectory: /home/tuser40 +cn: Timothy User +uidNumber: 11040 + +dn: uid=tuser41,cn=users,cn=accounts,dc=example,dc=com +uid: tuser41 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser41 +sn: User +homeDirectory: /home/tuser41 +cn: Timothy User +uidNumber: 11041 + +dn: uid=tuser42,cn=users,cn=accounts,dc=example,dc=com +uid: tuser42 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser42 +sn: User +homeDirectory: /home/tuser42 +cn: Timothy User +uidNumber: 11042 + +dn: uid=tuser43,cn=users,cn=accounts,dc=example,dc=com +uid: tuser43 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser43 +sn: User +homeDirectory: /home/tuser43 +cn: Timothy User +uidNumber: 11043 + +dn: uid=tuser44,cn=users,cn=accounts,dc=example,dc=com +uid: tuser44 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser44 +sn: User +homeDirectory: /home/tuser44 +cn: Timothy User +uidNumber: 11044 + +dn: uid=tuser45,cn=users,cn=accounts,dc=example,dc=com +uid: tuser45 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser45 +sn: User +homeDirectory: /home/tuser45 +cn: Timothy User +uidNumber: 11045 + +dn: uid=tuser46,cn=users,cn=accounts,dc=example,dc=com +uid: tuser46 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser46 +sn: User +homeDirectory: /home/tuser46 +cn: Timothy User +uidNumber: 11046 + +dn: uid=tuser47,cn=users,cn=accounts,dc=example,dc=com +uid: tuser47 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser47 +sn: User +homeDirectory: /home/tuser47 +cn: Timothy User +uidNumber: 11047 + +dn: uid=tuser48,cn=users,cn=accounts,dc=example,dc=com +uid: tuser48 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser48 +sn: User +homeDirectory: /home/tuser48 +cn: Timothy User +uidNumber: 11048 + +dn: uid=tuser49,cn=users,cn=accounts,dc=example,dc=com +uid: tuser49 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser49 +sn: User +homeDirectory: /home/tuser49 +cn: Timothy User +uidNumber: 11049 + +dn: uid=tuser50,cn=users,cn=accounts,dc=example,dc=com +uid: tuser50 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser50 +sn: User +homeDirectory: /home/tuser50 +cn: Timothy User +uidNumber: 11050 + +dn: uid=tuser51,cn=users,cn=accounts,dc=example,dc=com +uid: tuser51 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser51 +sn: User +homeDirectory: /home/tuser51 +cn: Timothy User +uidNumber: 11051 + +dn: uid=tuser52,cn=users,cn=accounts,dc=example,dc=com +uid: tuser52 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser52 +sn: User +homeDirectory: /home/tuser52 +cn: Timothy User +uidNumber: 11052 + +dn: uid=tuser53,cn=users,cn=accounts,dc=example,dc=com +uid: tuser53 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser53 +sn: User +homeDirectory: /home/tuser53 +cn: Timothy User +uidNumber: 11053 + +dn: uid=tuser54,cn=users,cn=accounts,dc=example,dc=com +uid: tuser54 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser54 +sn: User +homeDirectory: /home/tuser54 +cn: Timothy User +uidNumber: 11054 + +dn: uid=tuser55,cn=users,cn=accounts,dc=example,dc=com +uid: tuser55 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser55 +sn: User +homeDirectory: /home/tuser55 +cn: Timothy User +uidNumber: 11055 + +dn: uid=tuser56,cn=users,cn=accounts,dc=example,dc=com +uid: tuser56 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser56 +sn: User +homeDirectory: /home/tuser56 +cn: Timothy User +uidNumber: 11056 + +dn: uid=tuser57,cn=users,cn=accounts,dc=example,dc=com +uid: tuser57 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser57 +sn: User +homeDirectory: /home/tuser57 +cn: Timothy User +uidNumber: 11057 + +dn: uid=tuser58,cn=users,cn=accounts,dc=example,dc=com +uid: tuser58 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser58 +sn: User +homeDirectory: /home/tuser58 +cn: Timothy User +uidNumber: 11058 + +dn: uid=tuser59,cn=users,cn=accounts,dc=example,dc=com +uid: tuser59 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser59 +sn: User +homeDirectory: /home/tuser59 +cn: Timothy User +uidNumber: 11059 + +dn: uid=tuser60,cn=users,cn=accounts,dc=example,dc=com +uid: tuser60 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser60 +sn: User +homeDirectory: /home/tuser60 +cn: Timothy User +uidNumber: 11060 + +dn: uid=tuser61,cn=users,cn=accounts,dc=example,dc=com +uid: tuser61 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser61 +sn: User +homeDirectory: /home/tuser61 +cn: Timothy User +uidNumber: 11061 + +dn: uid=tuser62,cn=users,cn=accounts,dc=example,dc=com +uid: tuser62 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser62 +sn: User +homeDirectory: /home/tuser62 +cn: Timothy User +uidNumber: 11062 + +dn: uid=tuser63,cn=users,cn=accounts,dc=example,dc=com +uid: tuser63 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser63 +sn: User +homeDirectory: /home/tuser63 +cn: Timothy User +uidNumber: 11063 + +dn: uid=tuser64,cn=users,cn=accounts,dc=example,dc=com +uid: tuser64 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser64 +sn: User +homeDirectory: /home/tuser64 +cn: Timothy User +uidNumber: 11064 + +dn: uid=tuser65,cn=users,cn=accounts,dc=example,dc=com +uid: tuser65 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser65 +sn: User +homeDirectory: /home/tuser65 +cn: Timothy User +uidNumber: 11065 + +dn: uid=tuser66,cn=users,cn=accounts,dc=example,dc=com +uid: tuser66 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser66 +sn: User +homeDirectory: /home/tuser66 +cn: Timothy User +uidNumber: 11066 + +dn: uid=tuser67,cn=users,cn=accounts,dc=example,dc=com +uid: tuser67 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser67 +sn: User +homeDirectory: /home/tuser67 +cn: Timothy User +uidNumber: 11067 + +dn: uid=tuser68,cn=users,cn=accounts,dc=example,dc=com +uid: tuser68 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser68 +sn: User +homeDirectory: /home/tuser68 +cn: Timothy User +uidNumber: 11068 + +dn: uid=tuser69,cn=users,cn=accounts,dc=example,dc=com +uid: tuser69 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser69 +sn: User +homeDirectory: /home/tuser69 +cn: Timothy User +uidNumber: 11069 + +dn: uid=tuser70,cn=users,cn=accounts,dc=example,dc=com +uid: tuser70 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser70 +sn: User +homeDirectory: /home/tuser70 +cn: Timothy User +uidNumber: 11070 + +dn: uid=tuser71,cn=users,cn=accounts,dc=example,dc=com +uid: tuser71 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser71 +sn: User +homeDirectory: /home/tuser71 +cn: Timothy User +uidNumber: 11071 + +dn: uid=tuser72,cn=users,cn=accounts,dc=example,dc=com +uid: tuser72 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser72 +sn: User +homeDirectory: /home/tuser72 +cn: Timothy User +uidNumber: 11072 + +dn: uid=tuser73,cn=users,cn=accounts,dc=example,dc=com +uid: tuser73 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser73 +sn: User +homeDirectory: /home/tuser73 +cn: Timothy User +uidNumber: 11073 + +dn: uid=tuser74,cn=users,cn=accounts,dc=example,dc=com +uid: tuser74 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser74 +sn: User +homeDirectory: /home/tuser74 +cn: Timothy User +uidNumber: 11074 + +dn: uid=tuser75,cn=users,cn=accounts,dc=example,dc=com +uid: tuser75 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser75 +sn: User +homeDirectory: /home/tuser75 +cn: Timothy User +uidNumber: 11075 + +dn: uid=tuser76,cn=users,cn=accounts,dc=example,dc=com +uid: tuser76 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser76 +sn: User +homeDirectory: /home/tuser76 +cn: Timothy User +uidNumber: 11076 + +dn: uid=tuser77,cn=users,cn=accounts,dc=example,dc=com +uid: tuser77 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser77 +sn: User +homeDirectory: /home/tuser77 +cn: Timothy User +uidNumber: 11077 + +dn: uid=tuser78,cn=users,cn=accounts,dc=example,dc=com +uid: tuser78 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser78 +sn: User +homeDirectory: /home/tuser78 +cn: Timothy User +uidNumber: 11078 + +dn: uid=tuser79,cn=users,cn=accounts,dc=example,dc=com +uid: tuser79 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser79 +sn: User +homeDirectory: /home/tuser79 +cn: Timothy User +uidNumber: 11079 + +dn: uid=tuser80,cn=users,cn=accounts,dc=example,dc=com +uid: tuser80 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser80 +sn: User +homeDirectory: /home/tuser80 +cn: Timothy User +uidNumber: 11080 + +dn: uid=tuser81,cn=users,cn=accounts,dc=example,dc=com +uid: tuser81 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser81 +sn: User +homeDirectory: /home/tuser81 +cn: Timothy User +uidNumber: 11081 + +dn: uid=tuser82,cn=users,cn=accounts,dc=example,dc=com +uid: tuser82 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser82 +sn: User +homeDirectory: /home/tuser82 +cn: Timothy User +uidNumber: 11082 + +dn: uid=tuser83,cn=users,cn=accounts,dc=example,dc=com +uid: tuser83 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser83 +sn: User +homeDirectory: /home/tuser83 +cn: Timothy User +uidNumber: 11083 + +dn: uid=tuser84,cn=users,cn=accounts,dc=example,dc=com +uid: tuser84 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser84 +sn: User +homeDirectory: /home/tuser84 +cn: Timothy User +uidNumber: 11084 + +dn: uid=tuser85,cn=users,cn=accounts,dc=example,dc=com +uid: tuser85 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser85 +sn: User +homeDirectory: /home/tuser85 +cn: Timothy User +uidNumber: 11085 + +dn: uid=tuser86,cn=users,cn=accounts,dc=example,dc=com +uid: tuser86 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser86 +sn: User +homeDirectory: /home/tuser86 +cn: Timothy User +uidNumber: 11086 + +dn: uid=tuser87,cn=users,cn=accounts,dc=example,dc=com +uid: tuser87 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser87 +sn: User +homeDirectory: /home/tuser87 +cn: Timothy User +uidNumber: 11087 + +dn: uid=tuser88,cn=users,cn=accounts,dc=example,dc=com +uid: tuser88 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser88 +sn: User +homeDirectory: /home/tuser88 +cn: Timothy User +uidNumber: 11088 + +dn: uid=tuser89,cn=users,cn=accounts,dc=example,dc=com +uid: tuser89 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser89 +sn: User +homeDirectory: /home/tuser89 +cn: Timothy User +uidNumber: 11089 + +dn: uid=tuser90,cn=users,cn=accounts,dc=example,dc=com +uid: tuser90 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser90 +sn: User +homeDirectory: /home/tuser90 +cn: Timothy User +uidNumber: 11090 + +dn: uid=tuser91,cn=users,cn=accounts,dc=example,dc=com +uid: tuser91 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser91 +sn: User +homeDirectory: /home/tuser91 +cn: Timothy User +uidNumber: 11091 + +dn: uid=tuser92,cn=users,cn=accounts,dc=example,dc=com +uid: tuser92 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser92 +sn: User +homeDirectory: /home/tuser92 +cn: Timothy User +uidNumber: 11092 + +dn: uid=tuser93,cn=users,cn=accounts,dc=example,dc=com +uid: tuser93 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser93 +sn: User +homeDirectory: /home/tuser93 +cn: Timothy User +uidNumber: 11093 + +dn: uid=tuser94,cn=users,cn=accounts,dc=example,dc=com +uid: tuser94 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser94 +sn: User +homeDirectory: /home/tuser94 +cn: Timothy User +uidNumber: 11094 + +dn: uid=tuser95,cn=users,cn=accounts,dc=example,dc=com +uid: tuser95 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser95 +sn: User +homeDirectory: /home/tuser95 +cn: Timothy User +uidNumber: 11095 + +dn: uid=tuser96,cn=users,cn=accounts,dc=example,dc=com +uid: tuser96 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser96 +sn: User +homeDirectory: /home/tuser96 +cn: Timothy User +uidNumber: 11096 + +dn: uid=tuser97,cn=users,cn=accounts,dc=example,dc=com +uid: tuser97 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser97 +sn: User +homeDirectory: /home/tuser97 +cn: Timothy User +uidNumber: 11097 + +dn: uid=tuser98,cn=users,cn=accounts,dc=example,dc=com +uid: tuser98 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser98 +sn: User +homeDirectory: /home/tuser98 +cn: Timothy User +uidNumber: 11098 + +dn: uid=tuser99,cn=users,cn=accounts,dc=example,dc=com +uid: tuser99 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser99 +sn: User +homeDirectory: /home/tuser99 +cn: Timothy User +uidNumber: 11099 + +dn: uid=tuser100,cn=users,cn=accounts,dc=example,dc=com +uid: tuser100 +objectClass: top +objectClass: person +objectClass: posixAccount +objectClass: inetUser +loginShell: /bin/sh +gidNumber: 1004 +gecos: tuser100 +sn: User +homeDirectory: /home/tuser100 +cn: Timothy User +uidNumber: 110100 + +# g1, groups, accounts, example.com +dn: cn=g1,cn=groups,cn=accounts,dc=example,dc=com +objectClass: top +objectClass: groupofnames +objectClass: posixGroup +objectClass: inetUser +gidNumber: 1001 +cn: g1 +description: g1 +member: uid=tuser15,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser16,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser17,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser18,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser19,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser90,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser91,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser92,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser93,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser94,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser95,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser96,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser97,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser98,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser99,cn=users,cn=accounts,dc=example,dc=com + +# g2, groups, accounts, example.com +dn: cn=g2,cn=groups,cn=accounts,dc=example,dc=com +objectClass: top +objectClass: groupofnames +objectClass: posixGroup +objectClass: inetUser +gidNumber: 2002 +cn: g2 +description: g2 +member: uid=tuser10,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser11,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser12,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser13,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser14,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser20,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser21,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser22,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser23,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser24,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser25,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser26,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser27,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser28,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser29,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser30,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser31,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser32,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser33,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser34,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser35,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser36,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser37,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser38,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser39,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser40,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser41,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser42,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser43,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser44,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser45,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser46,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser47,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser48,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser49,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser50,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser51,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser52,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser53,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser54,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser55,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser56,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser57,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser58,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser59,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser60,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser61,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser62,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser63,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser64,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser65,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser66,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser67,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser68,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser69,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser70,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser71,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser72,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser73,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser74,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser75,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser76,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser77,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser78,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser79,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser80,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser81,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser82,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser83,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser84,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser85,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser86,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser87,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser88,cn=users,cn=accounts,dc=example,dc=com +member: uid=tuser89,cn=users,cn=accounts,dc=example,dc=com + |