在CentOS系统中,root用户拥有至高无上的权限,可以执行任何系统级别的操作,如安装软件、修改系统配置、管理服务等,在日常运维中,正确且安全地获取root权限至关重要,本文将详细介绍在CentOS中“申请”或获取root权限的两种主流方法:su命令和sudo命令,并分析其优劣与适用场景。

使用 su 切换到root用户
su(substitute user 或 switch user)命令是最传统、最直接的权限提升方式,它允许当前登录用户切换到系统中的任何其他用户,如果不指定用户名,则默认切换到root用户。
操作步骤:
-
打开终端。
-
输入以下命令并按回车:
su -
或者
su - root
这里的 符号非常重要,它表示不仅切换用户身份,还会同时加载目标用户(root)的环境变量和工作目录,提供一个纯净的root Shell环境。
-
系统会提示你输入密码,此时需要输入的是 root用户的密码,而不是你当前用户的密码。
-
密码输入正确后,你会发现终端提示符从 变为了 ,这表示你已经成功以root用户身份登录。
-
完成操作后,务必退出root会话,输入
exit或按Ctrl + D即可返回到原来的普通用户身份。
优缺点分析:
- 优点:操作简单直接,一旦切换,后续所有命令都将以root权限执行,无需重复认证。
- 缺点:安全性较低,需要知道并共享root密码,这在多用户环境中是巨大的安全风险,所有操作都记录在root用户的shell历史中,难以追溯到具体操作人。
使用 sudo 临时获取root权限(推荐)
sudo(superuser do)是现代Linux发行版推荐的权限管理方式,它允许一个经过授权的普通用户,以其他用户(通常是root)的身份来执行特定的命令,其核心思想是“最小权限原则”,即只在需要时授予必要的权限。
核心概念:wheel组
在CentOS中,默认有一个名为 wheel 的特殊用户组,该组的成员被默认赋予了使用 sudo 的权限。“申请”root权限的过程,实际上就是将你的用户添加到 wheel 组的过程。
操作步骤:
-
将用户添加到wheel组 假设你的用户名是
centosuser,你需要一个已有sudo权限的用户(或root用户)来执行以下命令:usermod -aG wheel centosuser
usermod:修改用户属性的命令。-aG:-a表示追加(append),-G指定组名,这两个参数必须一起使用,才能将用户追加到指定的附加组中,而不是替换原有组。wheel:目标组名。centosuser:你的用户名。
-
验证是否添加成功 执行以下命令,查看
centosuser所属的组:groups centosuser
如果输出中包含
wheel,说明添加成功。 -
使用
sudo执行命令centosuser可以使用sudo来执行需要root权限的命令了,更新系统软件包:
sudo yum update -y
系统会提示你输入 当前用户(centosuser)的密码,输入正确后,命令将以root权限执行,为了安全,
sudo会在一段时间内(默认15分钟)记住你的密码,期间再次使用sudo无需重复输入。
su 与 sudo 对比
为了更清晰地理解两者的区别,下表对它们进行了详细比较:
| 特性 | su |
sudo |
|---|---|---|
| 工作原理 | 完全切换到目标用户身份,开启一个新的Shell会话。 | 以当前用户身份,借用目标用户的权限执行单条命令。 |
| 使用密码 | 需要输入 目标用户(如root)的密码。 | 需要输入 当前用户自己的密码。 |
| 安全性 | 较低,需要共享root密码,审计困难。 | 高,无需共享root密码,所有操作可精确追溯到具体用户。 |
| 日志记录 | 操作记录在 ~/.bash_history,难以区分操作人。 |
所有 sudo 操作都会详细记录在 /var/log/secure 或 /var/log/auth.log 中。 |
| 权限粒度 | 粗放,一旦切换,拥有root的全部权限。 | 精细,可在 /etc/sudoers 文件中配置用户能执行的命令列表。 |
| 推荐场景 | 紧急情况或系统维护时需要长时间root会话。 | 日常运维和管理的首选方式。 |
最佳实践与安全建议
- 优先使用
sudo:在绝大多数情况下,sudo都是比su更安全、更规范的选择。 - 避免长时间以root身份运行:使用
su切换后,完成工作应立即退出,使用sudo时,也应仅在必要时使用。 - 禁用root远程登录:通过修改SSH配置文件
/etc/ssh/sshd_config,将PermitRootLogin设置为no,可以彻底阻止root用户通过SSH直接登录,强制所有管理员都必须使用sudo,从而提升系统整体安全性。
相关问答FAQs
Q1: 我忘记了root密码,但我有一个具有sudo权限的普通用户账户,我该如何重置root密码?
A: 完全可以,如果你拥有 sudo 权限,你可以使用 sudo 来执行 passwd 命令来修改任何用户的密码,包括root,具体操作如下:
- 以你的普通用户身份登录系统。
- 在终端中执行命令:
sudo passwd root - 系统会提示你输入你的普通用户密码以进行
sudo认证。 - 认证通过后,系统会要求你输入新的root密码,并再次确认。 这样,你就成功地为root账户设置了一个新密码,而无需知道旧的密码。
Q2: 当我执行 sudo 命令时,系统提示 “myuser is not in the sudoers file. This incident will be reported.”,这是什么意思?我该怎么办?
A: 这个错误信息非常明确,它的意思是你的用户账户(myuser)没有被配置在 sudoers 文件(/etc/sudoers)中,因此系统不允许你使用 sudo,系统会将此次尝试提权的行为记录到安全日志中,以供管理员审计。
解决方法:
你需要请一位已经拥有 sudo 权限的管理员,或者使用root账户,将你的用户添加到 wheel 组中,执行命令:
usermod -aG wheel myuser
执行完成后,重新登录或者注销当前会话,你就可以使用 sudo 命令了,如果你自己就是服务器的唯一管理员且没有其他sudo用户,你可能需要通过单用户模式或救援模式进入系统来修改root密码或用户组,这属于更高级的系统恢复操作。