Creating a System User still creates a home directory

713 views
Skip to first unread message

Uberteck

unread,
Jan 6, 2016, 3:27:30 PM1/6/16
to Ansible Project
Creating a user using the core user module and using the 'system' property still seems to create a home directory:

- name: create test user
  user
:
    name
=test
    system
=yes


The resulting user has a home directory when applying this to a Centos 7 host.

According to 'man useradd', creating a system account should override any defaults to create a home directory:


-r, --system

 

           
Create a system account.


 

           
System users will be created with no aging information in

           
/etc/shadow, and their numeric identifiers are chosen in the

           SYS_UID_MIN
-SYS_UID_MAX range, defined in /etc/login.defs, instead

           of UID_MIN
-UID_MAX (and their GID counterparts for the creation of

           groups
).


 

           
Note that useradd will not create a home directory for such an

           user
, regardless of the default setting in /etc/login.defs

           
(CREATE_HOME). You have to specify the -m options if you want a

           home directory
for a system account to be created.



Am I doing something wrong or is this a bug?

Cheers,

Matt Martz

unread,
Jan 6, 2016, 3:37:00 PM1/6/16
to ansible...@googlegroups.com
Does this happen if you supply `createhome=no`?

Also is the home directory created on the initial user creation or subsequent runs?

It looks like the user module does add `-r` to the command, however I see some code that may create the homedir regardless of `system=yes` on subsequent runs after the user is already created unless `createhome=no` is specified:


Not sure if we would need to make that check if `system=yes` was specified.

--
You received this message because you are subscribed to the Google Groups "Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ansible-proje...@googlegroups.com.
To post to this group, send email to ansible...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/e648b8d7-1997-451a-bec8-c40eec2ce8c6%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.



--
Matt Martz
@sivel
sivel.net

Uberteck

unread,
Jan 7, 2016, 1:42:59 PM1/7/16
to Ansible Project
No, adding 'createhome=no' stops it creating a home directory and is what I am currently using (in addition to system=yes) as a workaround to get the desired result.

I just tested and the home directory is created on the first run - on initial user creation.

I also tested manually running a 'useradd -r' to make sure it wasn't something funky with my OS build (vagrant box - lots stripped out) but that works as expected - no home directory.

If the command is supplying '-r' then it would seem a good call that something is overriding that somewhere and explicitly forcing the creation of a home directory.  However it seems to happen on the first run for me, so unless that 'missing homedirs' check is executed on first run, somewhere else might need looking at too.
Reply all
Reply to author
Forward
0 new messages