Zone creation/install process was without any error messages. So as
first step, looked at the man page for useradd. The error is documented in the DIAGNOSTICS section of the
man page.
The following indicates that the
/etc/passwd or /etc/shadow files do not exist:
UX: useradd: ERROR: Cannot update
system files - login cannot be created.

Are these files corrupt or inconsistent? It was the next thing to verify. If these files edited manually(which is not a good
practice), may get out of sync. I verified this by running
“pwck”. No errors reported, indication of files in order.

OK, so what next - May be DTrace ? - I had not used DTrace in Zones
before, I thought this would be good problem to solve using DTrace.
First target was to see if any useful scripts in "DTrace Toolkit" that
could of help.

Zones
by default, run with reduced set of privileges for
security reasons. If you want, you can grant additional privileges to
Zones. Not all privileges can be granted. See Solaris Container and
Resource Manager Guide for more details. Note the pros & cons
of granting privileges to zones. Since I am the only user for this
system, the
decision was easy for me.

For running DTrace, you need to grant "dtrace_user" and "dtrace_proc" privileges to the zone. See the steps below:

Without privileges this how the output of "Listing DTrace Probes" looks
root@zone1:[/etc]dtrace -l
ID PROVIDER MODULE
FUNCTION NAME

root@zone1:[/]dtrace -l|wc -l
483
root@zone1:[/]Note that even after granting the
DTrace privileges, LIMITED number of probes are available within a zone(Only a subset of what is available in global zone).
This number is 40000 plus when you are in global zone.

DTrace
Toolkit has lot useful scripts. For this problem, which appears to be
"some files missing" , the toolkit script "errinfo" was very useful. It
reported syscall failure.

root@zone1:[/DTraceToolkit-0.99]./errinfo -n useradd
EXEC
SYSCALL ERR DESC
useradd
xstat 2 No such file or directory
useradd
open 2 No such file or directory
useradd
xstat 2 No such file or directory
useradd
open 2 No such file or directory
\^C
root@zone1:[/DTraceToolkit-0.99]

As
you can see from above output, open, xstat is failing when running
"useradd". Next step was to find out for which file(s) these system
calls are failing. I used another script from the toolkit "statsnoop"

From
the "statsnoop" script output, you can see that, it is returning an
error for "/etc/user_attr" file. On verification, noticed that this
file doesn't exist.

root@zone1:[/DTraceToolkit-0.99]ls -lt /etc/user_attr
/etc/user_attr: No such file or directory
root@zone1:[/DTraceToolkit-0.99]

I faced this problem right after the Zone
installation. Given that, no other changes have been made to the zone
after install,
missing file from the zone could be because of incomplete install of a
package. For finding out which package this file belongs to, I ran the
following commands in the global zone where "useradd" was working fine.

By
adding DTrace Specific Privileges to Zones, we were able to run DTrace
in zones and identify the root cause of the problem. The file
"/etc/user_attr" which is
part of SUNWcsr package was missing. After restoring it, "useradd"
command works
without any issues.