accounts, return the first unused ID, starting from the max value.
This could be useful later to increase the static IDs range.
+2009-04-11 Peter Vrabec <pvrabec@redhat.com>
+
+ * libmisc/find_new_gid.c, libmisc/find_new_uid.c: For system
+ accounts, return the first unused ID, starting from the max value.
+ This could be useful later to increase the static IDs range.
+
2009-04-11 Peter Vrabec <pvrabec@redhat.com>
* NEWS, src/useradd.c, man/useradd.8.xml: add -Z option to map
* error handling improvement (see above).
* Speedup (see "addition of users or groups" above).
* do not create groups with GID set to (gid_t)-1.
+ * Allocate system group GIDs in reverse order. This could be useful
+ later to increase the static IDs range.
- groupdel
* audit logging improvements.
* error handling improvement (see above).
* Speedup (see "addition of users or groups" above).
* do not create users with UID set to (gid_t)-1.
* do not create groups with GID set to (gid_t)-1.
+ * Allocate system account UIDs/GIDs in reverse order. This could be useful
+ later to increase the static IDs range.
- passwd
* For compatibility with other passwd version, the --lock an --unlock
options do not lock or unlock the user account anymore. They only
* New -M/--no-create-home option to disable CREATE_HOME.
* do not create users with UID set to (gid_t)-1.
* Added -Z option to map SELinux user for user's login.
+ * Allocate system user UIDs in reverse order. This could be useful
+ later to increase the static IDs range.
- userdel
* audit logging improvements.
* Do not fail if the removed user is not in the shadow database.
}
}
+ /* find free system account in reverse order */
+ if (sys_group) {
+ for (group_id = gid_max; group_id >= gid_min; group_id--) {
+ if (0 == used_gids[group_id]) {
+ break;
+ }
+ }
+ if ( group_id < gid_min ) {
+ fprintf (stderr,
+ _("%s: Can't get unique GID (no more available GIDs)\n"),
+ Prog);
+ SYSLOG ((LOG_WARN,
+ "no more available GID on the system"));
+ return -1;
+ }
+ }
+
/*
* If a group with GID equal to GID_MAX exists, the above algorithm
* will give us GID_MAX+1 even if not unique. Search for the first
}
}
+ /* find free system account in reverse order */
+ if (sys_user) {
+ for (user_id = uid_max; user_id >= uid_min; user_id--) {
+ if (0 == used_uids[user_id]) {
+ break;
+ }
+ }
+ if (user_id < uid_min ) {
+ fprintf (stderr,
+ _("%s: Can't get unique system UID (no more available UIDs)\n"),
+ Prog);
+ SYSLOG ((LOG_WARN,
+ "no more available UID on the system"));
+ return -1;
+ }
+ }
+
/*
* If a user with UID equal to UID_MAX exists, the above algorithm
* will give us UID_MAX+1 even if not unique. Search for the first