简介
在 Linux 系统管理中,用户管理是核心任务之一。新部署的系统通常默认只提供 root
账户的访问权限。虽然 root
用户拥有对系统的完全控制权,但这伴随着巨大的风险。在日常系统管理中,直接使用 root
账户执行任务可能导致意外的破坏。
为了提升系统安全性并实现权限分离,最佳实践是创建一个非特权用户(non-privileged user),并仅在需要管理员权限时才通过 sudo
工具提升权限。sudo
允许用户以另一个用户的身份运行命令,通常是 root
用户。此外,为系统上的每个使用者分配独立的账户,有助于更好地追踪操作日志并细化权限。
本指南将详细讲解如何在 Ubuntu 24.04 系统上创建用户账户、授予 sudo
权限以及删除用户,确保您的系统管理既高效又安全。
前提条件
完成本教程,您需要一台运行 Ubuntu 24.04 的服务器。请确保您拥有服务器的 root
访问权限,并且已启用防火墙以保障系统安全。
添加用户
在 Ubuntu 系统中,添加新用户主要通过 adduser
命令实现。
如果您当前以 root
用户身份登录,可以直接运行以下命令创建新用户:
adduser <新用户>
如果您是以拥有 sudo
权限的非 root
用户身份登录,则需要在命令前加上 sudo
:
sudo adduser <新用户>
无论您使用哪种方式,系统都会引导您完成一系列配置步骤:
- 分配并确认密码:为新用户设置登录密码,并再次输入以确认。
- 输入额外信息:系统会提示您输入新用户的全名、房间号、电话等信息。这些信息是可选的,您可以直接按
ENTER
跳过。 - 确认信息:最后,系统会要求您确认所提供的信息是否正确。输入
Y
并按ENTER
键以继续创建用户。
至此,您的新用户账户已成功创建,可以使用您设置的密码进行登录。如果新用户需要执行管理员级别的任务,请继续阅读下一节以授予其 sudo
权限。
授予用户 Sudo 权限
如果新用户需要执行需要 root
(管理员)权限的命令,您必须授予其 sudo
访问权限。在 Ubuntu 20.04 系统上,有两种主要方法可以实现此目的。
方法一:将新用户添加到 Sudo 组
在 Ubuntu 系统中,sudo
默认配置为向 sudo
组中的任何用户授予完全权限。这是最常用且推荐的方法。
您可以首先使用 groups
命令查看新用户当前所属的组:
groups <新用户>
默认情况下,通过 adduser
命令创建的用户只会属于其自己的同名主组。要将用户添加到 sudo
组,可以使用 usermod
命令:
usermod -aG sudo <新用户>
上述命令中的 -aG
选项表示将用户追加(-a
)到指定的附加组(-G
)中。
请注意,usermod
命令本身需要 sudo
权限。这意味着您必须以 root
用户身份登录,或者以已属于 sudo
组的另一个用户身份登录来执行此操作。在后一种情况下,命令需要加上 sudo
前缀:
sudo usermod -aG sudo <新用户>
完成此操作后,新用户在下次登录时即可拥有 sudo
权限。
方法二:在 /etc/sudoers
中指定显式用户权限
除了将用户添加到 sudo
组之外,您还可以通过编辑 /etc/sudoers
配置文件来显式指定每个用户的权限。推荐使用 visudo
命令来编辑此文件,因为它会提供文件锁定机制,并会在保存前进行语法检查,从而防止因配置错误导致 sudo
权限丢失。
如果您当前以 root
用户身份登录,请运行:
visudo
如果您是以具有 sudo
权限的非 root
用户身份登录,则使用 sudo
前缀运行相同的命令:
sudo visudo
在打开的文件中,找到类似于下面的一行:
root ALL=(ALL:ALL) ALL
在此行下方添加以下内容。请务必将 <newuser>
替换为您要授予 sudo
权限的实际用户名:
root ALL=(ALL:ALL) ALL
<newuser> ALL=(ALL:ALL) ALL
为每个需要完全 sudo
权限的用户添加这样一行。完成后,按 CTRL + X
,然后按 Y
,再按 ENTER
键以确认并保存文件。
测试用户 Sudo 权限
现在您的新用户应该能够以管理员权限执行命令了。
当以新用户身份登录时,执行普通命令的方式如下:
some_command
要以管理员权限执行相同的命令,只需在命令前加上 sudo
:
sudo some_command
执行 sudo
命令时,系统会提示您输入当前登录的非 root
用户账户的密码。这是 sudo
的安全机制,确保只有合法用户才能提升权限。
删除用户
当一个用户账户不再需要时,出于安全和系统整洁的考虑,最好将其删除。
您可以选择只删除用户账户本身,而不删除其任何文件。作为 root
用户运行:
deluser <新用户>
如果您以具有 sudo
权限的非 root
用户身份登录,则使用以下命令:
sudo deluser <新用户>
相反,如果您希望在删除用户账户的同时,也删除其主目录及其中的所有文件,可以以 root
用户身份使用 --remove-home
选项:
deluser --remove-home <新用户>
如果您以具有 sudo
权限的非 root
用户身份运行此命令,则同样需要加上 sudo
前缀:
sudo deluser --remove-home <新用户>
清理 /etc/sudoers
中的条目(如果手动添加)
如果您之前通过手动编辑 /etc/sudoers
文件为已删除用户配置了 sudo
权限,请务必再次编辑该文件并删除相关行,以防止意外的权限问题:
visudo
或者,如果您是具有 sudo
权限的非 root
用户,请使用:
sudo visudo
找到并删除类似以下内容的行(例如,假设 newuser
是已删除的用户):
root ALL=(ALL:ALL) ALL
newuser ALL=(ALL:ALL) ALL # 删除此行
这将确保即使未来有同名用户被创建,也不会意外地获得 sudo
权限。
删除用户组(可选)
如果某个用户组主要是为已删除的用户而设,并且没有其他用户是该组的成员,您可以使用 delgroup
命令将其删除:
sudo delgroup <组名>
锁定用户而非删除
在某些情况下,您可能希望暂时禁用用户账户,而不是永久删除它。锁定用户账户通常意味着使其无法登录,但不会删除其主目录、文件或用户 ID,方便后续重新启用。
锁定密码
您可以“锁定”用户的密码,这将阻止他们使用其账户密码进行身份验证。这是禁用用户登录的一种常见且有效的方法。如果您以 root
身份登录,可以使用以下命令执行此操作:
passwd -l <用户名>
如果您以具有 sudo
权限的非 root
用户身份登录,可以使用以下命令:
sudo passwd -l <用户名>
-l
选项通过在 /etc/shadow
文件中加密密码前加上 !
或 *
字符来使原始密码无效。
要解锁用户的密码并允许他们再次使用原始密码登录,请运行:
passwd -u <用户名>
如果您以具有 sudo
权限的非 root
用户身份登录,可以使用以下命令:
sudo passwd -u <用户名>
-u
选项将密码恢复到锁定前的原始值。
禁用账户(无登录 Shell)
另一种禁用用户登录的方法是将用户的默认登录 shell 更改为不存在或为空的 shell,例如 /usr/sbin/nologin
或 /bin/false
。这可以防止用户在登录时建立交互式 shell 会话。
要将用户的 shell 更改为 /usr/sbin/nologin
:
sudo usermod -s /usr/sbin/nologin <用户名>
要将 shell 恢复到其原始值(例如,/bin/bash
),请运行:
sudo usermod -s /bin/bash <用户名>
常见问题
1. adduser
和 useradd
有什么区别?
adduser
是一个高级的、用户友好的脚本,它简化了创建新用户账户的过程。它会交互式地提示您输入信息,自动创建用户主目录,复制骨架文件(如 .bashrc
、.profile
),设置适当的权限,并分配一个默认 shell。在大多数情况下,它是 Debian 类系统(如 Ubuntu)上创建用户的推荐命令。
useradd
是一个低级的二进制命令,它提供了对用户创建的更精细控制。它默认不创建主目录或复制骨架文件,需要通过选项显式指定或手动处理这些内容。useradd
通常用于脚本或自动化系统管理中,需要精确控制和非交互式操作。
2. 如何在 Ubuntu 中授予用户 sudo 权限?
在 Ubuntu 上授予用户 sudo
权限最常见且推荐的方法是将其添加到 sudo
组。此组的成员通常被配置为能够以 root
权限执行命令。
您可以使用 usermod
命令将现有用户添加到 sudo
组:
sudo usermod -aG sudo <用户名>
将 <用户名>
替换为实际的用户名称。-a
标志表示“追加”,-G
指定辅助组。更改通常在用户下次登录时生效。
3. 删除用户会同时删除其文件吗?
默认情况下,Ubuntu 中的 deluser
命令(不带特定选项)会删除用户账户,但会保留其主目录和邮件假脱机。
要与账户一起删除用户的主目录和邮件假脱机,您应该使用 --remove-home
选项:
sudo deluser --remove-home <用户名>
如果您希望在删除用户的主目录之前创建备份,可以使用 --backup-home
选项:
sudo deluser --backup-home <用户名>
4. 我可以恢复已删除的用户吗?
在 Linux 中,通常无法通过单个命令直接“恢复”已删除的用户账户。一旦用户账户被删除,其条目就会从 /etc/passwd
、/etc/shadow
和 /etc/group
等系统文件中删除。
但是,数据恢复的可能性取决于用户是如何被删除的。如果只删除了账户(例如,deluser
命令不带 --remove-home
),用户的主目录和文件仍然存在于系统上。在这种情况下,您可以以相同的用户名重新创建用户,如果可能的话,使用相同的用户 ID (UID
) 和组 ID (GID
),然后将其新主目录指向旧的主目录。这使得他们可以重新访问其原始文件。
结论
您现在应该已经很好地掌握了如何在 Ubuntu 24.04 系统上添加和删除用户,以及如何管理 sudo
权限、删除用户组和锁定用户账户。有效的用户管理对于维护 Ubuntu 系统的安全性、组织性和完整性至关重要。您今天学到的技能将使您能够分离用户权限,并仅向他们授予完成工作所需的最低访问权限,从而提升系统整体的健壮性与安全性。
关于
关注我获取更多资讯

