114

I want to create a new user to run a service on the system but don't want to have /home and other configuration files for it. Like there is a user for postgres but it doesn't have any /home directory.

David Foerster
  • 36,264
  • 56
  • 94
  • 147
Owais Lone
  • 7,382

6 Answers6

153

By default the command useradd doesn't create home directories, but for a daemon I recommend you to use the system option and change the shell to a non-existent one so no one can login with said account (in ssh for example):

sudo useradd -r -s /bin/false USERNAME

You can see all the options with man useradd and man groupadd if you want to create a group for the user too.

Veger
  • 149
sergio91pt
  • 2,942
65

Try adduser --system --no-create-home USERNAME or simply have a look at the man adduser which claims to be a "friendlier front end to the low level tools like useradd...".

Eliah Kagan
  • 117,780
Clausi
  • 4,957
  • 7
    I actually didn't notice that this is adduser vs. useradd, and running the command useradd with these options did not produce any error, but created the account with shell /bin/bash. "Buyer Beware". – isapir Oct 23 '16 at 20:01
  • 1
    in centos7, group is not created by defaulty. ref: [root@srvr0 ava]# adduser --system --no-create-home --group bigdata adduser: group 'bigdata' does not exist – AVA Feb 09 '20 at 08:00
21

I needed something similar - a new user without login privileges and tied to a system service. However, the answer by Clausi creates a user with the primary group as 'nogroup', which wasn't really desirable.

adduser --system --no-create-home --group USERNAME creates a system group with the same name as the user and associates it with the user as the primary group. This can then be verified by using the groups USERNAME or the id USERNAME command.

daoperator
  • 229
  • 2
  • 2
  • in centos7, group is not created by defaulty. ref: [root@srvr0 ava]# adduser --system --no-create-home --group bigdata adduser: group 'bigdata' does not exist – AVA Feb 09 '20 at 07:59
6

To add user without home directory the commands are,

useradd -M username

or

useradd --no-create-home username

or

adduser -M username

or

adduser --no-create-home username
hg8
  • 13,462
-1

Creating a User without Password with Home directory:


User & Group

Create the desired Group and User with Home-Dir.

mkdir <HOME-DIR>
sudo adduser --disabled-password --home <HOME-DIR> --group <GROUP-NAME>
sudo useradd -s /bin/bash -d <HOME-DIR> -g <GROUP-NAME> <USER-NAME>

Permissions

sudo chown <USER>:<USER> -R <HOME-DIR>    # Owner permissions
sudo chmod 775 -R <HOME-PATH>             # Optional

Add your primary user to the new group (Optional)

sudo usermod -a -G <GROUP-NAME> <PRIMARY-USER-NAME>

To see all the groups, use: $ id, $ groups. login to a user: $ sudo su - <USER>. Re-login or Reset-PC is required.

Remove User and Group

sudo deluser --remove-home <USER-NAME>
Benny
  • 4,920
-1

try this command:

sudo useradd vivek

This will create a user without creating your home folder at /home/vivek

theTuxRacer
  • 16,185
  • 4
    No, as long as you are logged in with this account, the /home/vivek will be automatically created. – Meow Oct 12 '15 at 14:41