如何在没有 /home 的情况下添加用户?

Owa*_*one 103 users home-directory

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

ser*_*1pt 136

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

sudo useradd -r -s /bin/false USERNAME
Run Code Online (Sandbox Code Playgroud)

你可以看到所有的选项man useraddman groupadd如果要为用户创建一个组了。

  • 我相信最好的做法是使用 `/sbin/nologin` 作为登录 shell,尽管使用 `/bin/false` 不会有任何区别。 (15认同)
  • useradd -r 创建一个系统用户,而不仅仅是一个没有 homedir 的用户。 (5认同)
  • 注意, useradd -r 也会创建相应的组。 (3认同)

Cla*_*usi 62

尝试adduser --system --no-create-home USERNAME或只是看看man adduser它声称是“对像 useradd... 这样的低级工具更友好的前端”。

  • 我实际上没有注意到这是 `adduser` 与 `useradd`,并且使用这些选项运行命令 `useradd` 没有产生任何错误,而是使用 shell `/bin/bash` 创建了帐户。“买家当心”。 (5认同)

小智 18

我需要类似的东西 - 一个没有登录权限并绑定到系统服务的新用户。但是,Clausi 的回答创建了一个主要组为“nogroup”的用户,这并不理想。

adduser --system --no-create-home --group USERNAME创建一个与用户同名的系统组,并将其与作为主组的用户关联。然后可以使用groups USERNAMEid USERNAME命令来验证这一点。


小智 5

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

useradd -M username
Run Code Online (Sandbox Code Playgroud)

或者

useradd --no-create-home username
Run Code Online (Sandbox Code Playgroud)

或者

adduser -M username
Run Code Online (Sandbox Code Playgroud)

或者

adduser --no-create-home username
Run Code Online (Sandbox Code Playgroud)