如何添加一个系统用户,使其不在lightdm登录窗口或用户账户中显示?

我想创建一个没有登录、没有主目录,并且不会在lightdm登录窗口或用户账户工具中显示的用户。就像/etc/passwd中的其他用户一样:sshd、syslog、avahi...
我已经尝试了以下命令行:
useradd -r -u 1001 -M -g 1001 media

但是我仍然可以在用户账户工具中看到该用户。

enter image description here

提前感谢!

注意:有人声称这个问题是重复的,但我不这么认为。主要区别在于我想创建一种用户,该用户在lightdm登录窗口和用户账户工具中都不会显示。一个没有正确定义$home的用户是另一回事。


1使用adduser命令代替useradd命令,并且不指定UID,让系统自动选择一个小于1000的UID。 - Zanna
1我同意这不是重复的。其他答案没有回答到这个具体问题。 - Kevin Bowen
如果你已经得到了答案,请点击灰色的勾号来接受一个。这将标记问题为“已回答”,并有助于网站。另一方面,如果你通过其他方式解决了问题,你可以回答自己的问题。 - Anwar
2个回答

实现这一点的标准方法而不需要为用户创建麻烦的工作就是配置lightdm如下。

/etc/lightdm/users.conf中添加以下行

[UserList]
hidden-users=media

用户media将从lightdm用户列表中隐藏。该配置文件可能已经包含其他用户的名称,例如nobody nobody4 noaccess,在这种情况下,请用空格分隔您所需的用户名添加到该行。因此,该行将变成这样。
hidden-users=nobody nobody4 noaccess media

您不需要创建uid小于500的用户来实现此目的。

为了完成这个任务,您可以使用以下命令创建一个没有主目录并将其设置为系统用户的用户。

sudo adduser --no-create-home --ingroup admin media

这里的--no-create-home会阻止为用户创建主目录,而--ingroup admin会将用户添加到admin组中,这是Ubuntu的默认管理组。在旧版的Ubuntu中,该组被称为sudowheel组。

使用这个命令:
$ sudo adduser --no-create-home --disabled-login --shell /bin/false --system --uid 1001 media
$ sudo addgroup --gid 1001 media

当运行测试时,使用man页面中的参数,adduser命令中的-gid应该按指定的名称和提供的数字创建组。然而,这个功能显然已经改变了,但文档没有更新。在测试中,指定--gid会导致错误:adduser: The GID 1001 does not exist。因此,我删除了--gid以在创建用户时创建新的编号,并添加了第二个命令来为新用户创建组。
更新:
通过UserID在/var/lib/AccountsService/users目录下编辑一个文件,包含以下内容:
在这种情况下运行此命令:
$ sudo nano /var/lib/AccountsService/users/media

然后确保包含以下两行:
(如果用户已登录,则文件应自动创建。如果用户尚未登录,则文件将不存在。您可以使用上面的命令行手动创建它。)
[User]
SystemAccount=true
现在,重新启动或重启lightdm服务(取决于您的Ubuntu版本):
(为了避免注销,您可以按下Ctrl+Alt+F2以重新启动Lightdm。然后从控制台运行下面的命令。)
$ sudo service lightdm restart

或者(适用于Ubuntu 16.04及更高版本)
$ sudo systemctl restart lightdm

注意:
默认情况下,编号低于500的用户ID会自动隐藏。
更新中的一些信息可以在/etc/lightdm/users.conf文件中找到。

1我按照上述步骤操作了,但用户媒体仍然显示在lighdm登录屏幕窗口中。 - rssh22
您应该选择一个小于1000的UID来实现这个目标,或者让系统自动选择一个(除非没有剩余的UID可用)。 - David Foerster
@rssh22请检查答案的更新。最近对用户隐藏的处理方式进行了一些更改。我刚刚测试了这些更改,任何用户都可以使用此方法隐藏。 - L. D. James