如何添加一个没有/home目录的用户?

我想在系统上创建一个新用户来运行一个服务,但是不想为它创建/home和其他配置文件。就像有一个用于postgres的用户,但它没有任何/home目录一样。

1我刚刚找到了这个链接:http://www.howtogeek.com/howto/ubuntu/add-a-user-on-ubuntu-server/ - Owais Lone
6个回答

默认情况下,useradd命令不会创建主目录,但对于守护程序,我建议您使用system选项并将shell更改为不存在的选项,以便没有人可以使用该帐户登录(例如在ssh中):

sudo useradd -r -s /bin/false USERNAME

你可以使用man useraddman groupadd命令查看所有选项,如果你想为用户创建一个组的话。

6useradd -r 创建一个系统用户,而不仅仅是一个没有主目录的用户。 - fromnaboo
3注意,使用useradd -r命令还会创建相应的用户组。 - user25389
24我认为最佳实践是使用/sbin/nologin作为登录 shell,尽管使用/bin/false也不会有任何区别。 - Meow

尝试使用adduser --system --no-create-home USERNAME或者简单地查看man adduser,它声称是一个“更友好的前端工具,用于低级别工具如useradd...”。

6我实际上没有注意到这是adduseruseradd的区别,并且使用这些选项运行命令useradd并没有产生任何错误,但创建了带有shell /bin/bash的账户。 "买家要谨慎"。 - isapir
1在CentOS 7中,默认情况下不会创建组。参考:[root@srvr0 ava]# adduser --system --no-create-home --group bigdata adduser: group 'bigdata' does not exist - AVA

我需要类似的东西——一个没有登录权限且绑定到系统服务的新用户。然而,Clausi的答案创建了一个主要组为“nogroup”的用户,这并不是真正想要的。 adduser --system --no-create-home --group USERNAME 创建一个与用户同名的系统组,并将其作为主要组与用户关联。这可以通过使用groups USERNAME id USERNAME命令进行验证。

在CentOS 7中,默认情况下不会创建组。参考:[root@srvr0 ava]# adduser --system --no-create-home --group bigdata adduser: group 'bigdata' does not exist - AVA

添加没有主目录的用户的命令是:

useradd -M username

或者

useradd --no-create-home username

或者

adduser -M username

或者

adduser --no-create-home username

尝试使用以下命令:
sudo useradd vivek
这将创建一个用户,但不会在 /home/vivek 中创建主文件夹。

4不,只要您使用此帐户登录,/home/vivek 目录将会自动创建。 - Meow

创建一个没有密码但有家目录的用户:

用户和组

创建所需的带有主目录的组和用户。

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>

权限

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

将您的主要用户添加到新组(可选)
sudo usermod -a -G <GROUP-NAME> <PRIMARY-USER-NAME>

要查看所有的组,请使用:$ id$ groups。登录到用户:$ sudo su - <USER>。需要重新登录或重置电脑。

删除用户和组

sudo deluser --remove-home <USER-NAME>