Red Hat Bugzilla – Bug 967245
CRIT anaconda: Error when creating new user: name contains non-ASCII characters
Last modified: 2014-01-30 17:05:49 EST
Created attachment 753192 [details]
Description of problem:
If an user name with unicode character is specified at user creation screen,
anaconda silently finishes the installation without reporting that no user was
created due to the unicode character in the username.
Version-Release number of selected component (if applicable):
F19b RC4 (19.30-1)
Steps to Reproduce:
1. Customize Installation Settings
2. Start Installing
3. Set Root password
4. Create an user with an unicode character in the username.
5. Installation finishes ok. (logs shows that no user was created).
6. Upon reboot, and inspection, one can the user was not created.
failure to report that the user will not be created.
either make sure that it is created, or refuse to do it if the
underlying toos do not support it (invalid username).
21:08:06,626 INFO anaconda: Creating users
21:08:06,627 INFO anaconda: created new libuser.conf at /tmp/libuser.aGAqyX with instPath="/mnt/sysimage"
21:08:06,834 CRIT anaconda: Error when creating new user: name contains non-ASCII characters
21:08:06,838 ERR anaconda: User admin<U+200F> already exists, not creating.
Created attachment 753193 [details]
Created attachment 753194 [details]
Created attachment 753195 [details]
Thanks for your report.
Brian, is there anything to suggest this is a problem in libuser?
> 21:08:06,834 CRIT anaconda: Error when creating new user: name contains non-ASCII characters
> 21:08:06,838 ERR anaconda: User admin<U+200F> already exists, not creating.
So this suggests that libuser has reported an error, but anaconda is handling it incorrectly. In particular kickstart.User.execute() logs the second ERR if createUser fails for any reason; then the information about the failure is ignored.
(Also utils/handle-sshpw is ignoring the failure completely.)
The user name restrictions are intentional, and at least for F19 are definitely not changing.
* Really needs to handle libuser error returns in a way that is visible to the user
* Might consider doing user-friendlier validation in advance; see isUserGroupNameOk in /usr/share/system-config-users/userGroupCheck.py .