Ubuntu用户登录权限管理:限制与配置指南
引言
系统管理的核心部分在于配置和管理用户与组。其中一项重要任务是监控所有系统实体的登录能力。
本指南将深入探讨用户管理和身份验证日志记录背后的概念。
我们将在Ubuntu 22.04服务器上探索这些概念,但您可以在任何现代Linux发行版上跟随操作。您可以参考我们的Ubuntu 22.04初始服务器设置指南来为本教程设置您的Ubuntu 22.04服务器。
正如前面系列教程中提到的,您服务器上的一些用户可能与服务相关联,并非作为常规账户使用。
在本文中,您将了解如何通过多种方式限制这些用户的登录能力。
如何使用 /etc/passwd 限制访问
限制登录能力的一种方法是将账户的登录 Shell 设置为特殊值。
一个典型的例子是 messagebus 用户,您可以使用 grep 在 /etc/passwd 文件中搜索它。
less /etc/passwd | grep messagebus
messagebus:x:102:105::/nonexistent:/usr/sbin/nologin
当登录成功时,最后一个字段是最终要运行的 Shell 或命令。在这种情况下,该值被设置为 /usr/sbin/nologin。
如果您尝试使用 sudo su 切换到 messagebus 用户,将会失败。
sudo su messagebus
This account is currently not available.
您收到此信息是因为 messagebus 用户的 Shell 被设置为 /usr/sbin/nologin。
当您需要阻止用户登录时,可以使用 usermod 工具将用户的默认登录 Shell(通常为 /bin/bash)更改为一个不存在的 Shell,例如 nologin。
sudo usermod -s /usr/sbin/nologin username
如何使用 /etc/shadow 限制访问
另一种类似的限制访问方法是使用 /etc/shadow 文件。该文件包含系统上每个用户的哈希密码值。
您可以使用 less 命令查看整个文件。
sudo less /etc/shadow
. . . uuidd:*:19105:0:99999:7::: tcpdump:*:19105:0:99999:7::: sshd:*:19105:0:99999:7::: pollinate:*:19105:0:99999:7::: landscape:*:19105:0:99999:7::: lxd:!:19180:::::: sammy:$y$j9T$4gyOQ5ieEWdx1ZdggX3Nj1$AbEA9FsG03aTsQhl.ZVMXatwCAvnxFbE/GHUKpjf9u6:19276:0:99999:7:::
最后一行的第二个字段(以 $y$j9T$4gyO… 开头的字段)包含了经过哈希处理的密码值。
系统账户的第二个字段是一个星号(*),而不是一个复杂的哈希值。具有星号的账户表示未设置密码,必须更改密码后才能通过密码进行验证。
您可以通过在哈希值之前加上感叹号(!)来禁用密码值(从而使具有与星号值等效的密码的账户)。
两个工具可以通过“锁定”指定的账户来实现此功能。
可以使用 passwd 命令的 -l 选项锁定账户,并使用 -u 选项解锁。
sudo passwd -l sammy
sudo less /etc/shadow | grep sammy
sammy:!$y$j9T$4gyOQ5ieEWdx1ZdggX3Nj1$AbEA9FsG03aTsQhl.ZVMXatwCAvnxFbE/GHUKpjf9u6:19276:0:99999:7::::::
正如您所见,哈希密码被保留,但在前面加上感叹号以使其无效。
输入后,您的账户可以再次解锁。
sudo passwd -u sammy
用户可以使用 usermod 命令执行等效操作。对应的标志是 -L 表示锁定,而 -U 表示解锁。
sudo usermod -L sammy
sudo usermod -U sammy
注意
如何使用 /etc/nologin 限制访问
可能会出现一些情况,您需要禁用除了 root 账户之外的所有登录方式。
这可能是因为进行了深度维护,或者是因为您的一个或多个用户账户被入侵。
无论如何,可以通过在 /etc/nologin 中创建一个文件来实现。
sudo touch /etc/nologin
这将阻止没有超级用户权限的任何账户登录。
如果 /etc/nologin 文件为空,这只是让用户返回到他们的本地 Shell,没有任何解释。
实际发生的是文件的内容被返回给用户。如果添加一条消息,用户将收到登录失败的解释。
sudo sh -c 'echo "Planned maintenance. Log in capabilities will be restored at 1545 UTC" > /etc/nologin'
现在当您尝试使用密码登录时,您会收到这条消息。
ssh sammy@host
sammy@host's password: Planned maintenance. Log in capabilities will be restored at 1545 UTC Connection closed by host
只有 root 用户仍然可以正常登录。删除 /etc/nologin 文件以撤销登录限制。
sudo rm /etc/nologin
总结
Linux 上的用户认证是系统管理中一个相对灵活的领域。有很多方法可以使用广泛可用的工具来实现相同的目标。
现在您应该知道如何通过各种方法限制用户登录了。
在本教程系列的下一部分中,您将会复习如何监控用户登录情况。