rss*_*h22 5 login user-management useradd
我想创建一个没有登录、没有主页且不会显示在 lightdm 登录屏幕窗口或用户帐户工具中的用户。就像 /etc/passwd 中的其他用户一样:sshd、syslog、avahi...
我尝试过使用这个命令行:
useradd -r -u 1001 -M -g 1001 media
Run Code Online (Sandbox Code Playgroud)
但我仍然可以在用户帐户工具中看到该用户:
提前致谢!!
注意:这个问题据称是重复的,但我不这么认为。主要区别是我想要创建一种永远不会在 lightdm 登录屏幕窗口和用户帐户工具中显示的用户。没有正确定义 $home 的用户是另一回事。
无需在用户创建方面做太多麻烦即可实现此目的的标准方法只是配置 lightdm。
添加/etc/lightdm/users.conf这些行
[UserList]
hidden-users=media
Run Code Online (Sandbox Code Playgroud)
然后该用户media将从 lightdm 用户列表中隐藏。该配置文件可能已经包含其他用户名,例如nobody nobody4 noaccess,在这种情况下,通过用空格分隔来添加所需的用户名。所以这条线就会变成这样
hidden-users=nobody nobody4 noaccess media
Run Code Online (Sandbox Code Playgroud)
您不需要创建 uid 小于 500 的用户来实现此目的。
为了完成,您可以使用此命令创建一个没有家庭的用户并使其成为系统用户
sudo adduser --no-create-home --ingroup admin media
Run Code Online (Sandbox Code Playgroud)
这里--no-create-home将阻止为用户创建主目录,并将--ingroup admin用户添加到admin组(Ubuntu 的默认管理组)中。在较旧的 Ubuntu 版本中,该组被称为sudo或wheel。
使用这个命令:
$ sudo adduser --no-create-home --disabled-login --shell /bin/false --system --uid 1001 media
$ sudo addgroup --gid 1001 media
Run Code Online (Sandbox Code Playgroud)
运行测试时,使用手册页作为参数,命令-gid中的adduser应该按指定的名称和提供的编号创建组。然而,在没有更新文档的情况下,这个功能显然已经发生了变化。在测试中,指定--gid失败并出现错误:adduser: The GID 1001 does not exist。因此,我--gid在创建用户时删除了创建新号码,并添加了第二个命令来为新用户创建组。
更新:
按目录中的 UserID 编辑文件/var/lib/AccountsService/users以包含以下行:
在这种情况下运行以下命令:
$ sudo nano /var/lib/AccountsService/users/media
Run Code Online (Sandbox Code Playgroud)
然后确保包含这两行:
(如果用户已登录,则应自动创建文件。如果用户尚未登录,则该文件将不存在。您可以使用上面的命令行手动创建它。)
[用户] 系统帐户=true
现在重新启动或重新启动 lightdm 服务(取决于您的 Ubuntu 版本):
(为了避免注销,您可以Lightdm使用Ctrl+ Alt+重新启动F2。然后从控制台运行以下命令。)
$ sudo service lightdm restart
Run Code Online (Sandbox Code Playgroud)
或(Ubuntu 16.04 及更高版本)
$ sudo systemctl restart lightdm
Run Code Online (Sandbox Code Playgroud)
注意:
默认情况下,小于 500 的 USERID 会自动隐藏。
更新中的一些信息可以在该文件中找到/etc/lightdm/users.conf。