[Pkg-shadow-devel] useradd --system does not signal an error

Sebastian Andrzej Siewior sebastian at breakpoint.cc
Wed Mar 4 21:17:57 UTC 2015


I've been pointed to an error in Ubuntu and I couldn't reproduce the
problem because of:

|root at debsidamd64:~# adduser --no-create-home --disabled-password --disabled-login  --shell /bin/false --group --home /var/lib/clamav clamav  adduser: The group `clamav' already exists.
|root at debsidamd64:~# echo $?
|root at debsidamd64:~# adduser --system --no-create-home --disabled-password --disabled-login  --shell /bin/false --group --home /var/lib/clamav clamav
|The system user `clamav' already exists. Exiting.
|root at debsidamd64:~# echo $?

So without --system there is an error code, with --system there is none.
Is this expected? From a quick browse of useradd.c shadow package I see:

|2088         /*
|2089          * Start with a quick check to see if the user exists.
|2090          */
|2091         if (getpwnam (user_name) != NULL) { /* local, no need for xgetpwnam */
|2092                 fprintf (stderr, _("%s: user '%s' already exists\n"), Prog, user_name);
|2093 #ifdef WITH_AUDIT
|2094                 audit_logger (AUDIT_ADD_USER, Prog,
|2095                               "adding user",
|2096                               user_name, AUDIT_NO_ID,
|2097                               SHADOW_AUDIT_FAILURE);
|2098 #endif
|2099                 fail_exit (E_NAME_IN_USE);
|2100         }

and E_NAME_IN_USE is 9 and not 0.


More information about the Pkg-shadow-devel mailing list