在 CentOS 及其他 Linux 发行版中,root 用户是超级管理员,拥有对系统的最高权限,可以执行任何操作,包括安装软件、修改系统配置、管理服务等,在日常的系统管理和维护工作中,切换到 root 用户是一项非常基础且核心的技能,本文将详细介绍在 CentOS 中切换到 root 用户的几种主要方法、它们之间的区别以及相关的最佳实践,旨在帮助用户安全、高效地管理系统。

使用 su 命令切换
su(Substitute User 的缩写)命令是 Linux 中最传统、最直接的切换用户方式,不加任何参数时,默认切换到 root 用户。
基本用法
切换到 root 用户(不完全切换)
在终端中输入su命令,然后系统会提示您输入root用户的密码。[centos@server ~]$ su 密码: [root@server centos]#
注意看,切换后,提示符虽然变成了 (表示 root 权限),但当前的工作目录仍然是原用户
centos的家目录(/home/centos),这是因为这种方式仅仅切换了用户身份,但并未加载root用户的完整环境变量(如PATH,HOME等),这可能导致一些root用户的专属命令无法找到。切换到 root 用户(完全登录)
为了获得一个与root用户直接登录时完全一致的环境,推荐使用su -或su -l或su --login命令。[centos@server ~]$ su - 密码: 上一次登录:三 10月 26 10:30:15 CST 2025pts/0 上 [root@server ~]#
您会发现工作目录已经变成了
root的家目录(/root),并且所有环境变量都已加载,这是最推荐的su使用方式,因为它能确保环境的一致性,避免因环境变量问题导致的意外错误。
退出 su 会话
完成管理员操作后,为了安全起见,应及时退出 root 会话,只需在终端中输入 exit 或按下 Ctrl + D 即可返回到原来的普通用户。
[root@server ~]# exit 登出 [centos@server ~]$
su 的优缺点
优点:
- 简单直接,是所有类 Unix 系统的标准内置命令。
- 需要知道
root密码,提供了一层基本的身份验证。
缺点:
- 安全性风险:需要共享
root密码,如果多个管理员都需要root权限,他们都必须知道root密码,这增加了密码泄露的风险,当需要撤销某个管理员权限时,唯一的办法是修改root密码并通知所有其他人,管理不便。 - 审计困难:系统日志只能记录有人通过
su切换到了root,但无法清晰地追踪是哪个普通用户执行了哪条具体的root命令。
- 安全性风险:需要共享
使用 sudo 命令提权
sudo(Superuser Do 的缩写)是现代 Linux 发行版中更为推荐的管理工具,它允许一个已授权的普通用户以 root 或其他用户的身份来执行命令,而无需知道 root 用户的密码,用户在执行 sudo 时,输入的是自己的密码。

基本用法
执行单个命令
在需要root权限的命令前加上sudo即可。[centos@server ~]$ sudo yum update -y [sudo] password for centos: # 这里输入的是 centos 用户的密码
系统会检查
/etc/sudoers配置文件,确认当前用户是否有执行该命令的权限,在一段时间内(默认为 5 分钟)再次使用sudo,无需重复输入密码。获取临时的 root Shell
如果需要连续执行多条root命令,可以使用sudo -i或sudo su -来启动一个临时的rootShell。[centos@server ~]$ sudo -i [sudo] password for centos: [root@server ~]#
这与
su -的效果非常相似,都会加载root的完整环境,退出方式同样是exit。
配置 sudo 权限
sudo 的权限配置文件是 /etc/sudoers。强烈建议不要直接使用 vi 等编辑器修改此文件,因为语法错误可能导致系统无法正常使用 sudo,正确的做法是使用 visudo 命令,它会在保存前对语法进行检查。
在 CentOS 中,通常将需要 sudo 权限的用户添加到 wheel 组。/etc/sudoers 文件中默认已有一行配置,允许 wheel 组的所有成员使用 sudo:
## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL 只需将用户(centos)添加到 wheel 组即可:
# 需要已有 root 权限来执行此命令 [root@server ~]# usermod -aG wheel centos
sudo 的优缺点
优点:
- 安全性高:无需共享
root密码,每个管理员使用自己的账户和密码。 - 精细的权限控制:可以在
/etc/sudoers中为不同用户配置不同的命令权限,实现最小权限原则。 - 审计能力强:所有通过
sudo执行的命令都会被详细记录到日志中(如/var/log/secure),可以清晰地追溯到是哪个用户、在什么时间、执行了什么命令。
- 安全性高:无需共享
缺点:

- 配置相对
su复杂一些,需要管理员预先设置。
- 配置相对
su 与 sudo 的比较与最佳实践
为了更直观地理解两者的差异,下表进行了详细对比:
| 特性 | su | sudo |
|---|---|---|
| 认证方式 | 需要目标用户(如 root)的密码 | 需要当前用户自己的密码 |
| 安全性 | 较低,需共享 root 密码 | 高,无需共享 root 密码 |
| 审计能力 | 弱,难以追踪具体操作者 | 强,详细记录所有操作 |
| 权限粒度 | 粗糙,要么是普通用户,要么是 root | 精细,可控制到具体命令和用户 |
| 推荐场景 | 单人管理的临时主机,或紧急情况 | 多人管理的服务器,生产环境 |
最佳实践小编总结:
:在任何可能的情况下,尤其是生产环境和多人协作的服务器上,都应该使用 sudo进行权限提升。- 禁用直接 root 登录:通过 SSH 远程管理服务器时,建议在
/etc/ssh/sshd_config中设置PermitRootLogin no,禁止root用户直接登录,所有管理员都应使用普通账户登录,再通过sudo提权。 :如果因特殊原因必须使用 su,请务必使用su -来确保环境的正确性。- 遵循最小权限原则:配置
sudo时,只授予用户完成其工作所必需的最小权限集。
相关问答 FAQs
Q1: 为什么在现代 Linux 系统管理中,sudo 被强烈推荐,而不是直接使用 su 切换到 root?
A: 推荐使用 sudo 主要基于三个核心原因:安全性、可审计性和灵活性。sudo 无需共享 root 密码,每个管理员使用自己的密码,极大地降低了密码泄露的风险,也使得权限回收变得简单(只需移除该用户的 sudo 权限,无需更改 root 密码)。sudo 会将每一次提权操作(谁、何时、执行了什么命令)都详细记录在日志中,为安全审计和故障排查提供了清晰的依据。sudo 的配置非常灵活,可以为不同用户或用户组分配不同的命令权限,实现“最小权限原则”,而 su 则是“一刀切”式的完全权限授予,增加了误操作的风险。
Q2: 我是一个普通用户,当我尝试使用 sudo 时,系统提示 “username is not in the sudoers file. This incident will be reported.”,这是什么意思,我该如何解决?
A: 这个错误信息意味着您的当前用户名没有被配置在 /etc/sudoers 文件中,因此系统不允许您使用 sudo 命令来提升权限,要解决这个问题,您需要请求一个已有 root 权限的管理员为您授权,最常见和推荐的方法是将您的账户添加到 wheel 组,管理员可以执行以下命令:sudo usermod -aG wheel your_username
(请将 your_username 替换为您的实际用户名),执行后,您需要注销并重新登录,或者使用 newgrp wheel 命令使组权限生效,之后,您就可以正常使用 sudo 了,如果管理员不想使用组,也可以通过 visudo 命令直接在 /etc/sudoers 文件中为您的用户名添加一行规则,your_username ALL=(ALL) ALL。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复