在CentOS系统中,root用户是拥有最高权限的超级用户,可以对系统进行任何操作,包括安装软件、修改系统配置、管理用户等,正因为其权限至高无上,直接以root身份登录也带来了较高的安全风险,现代Linux发行版,包括CentOS,都推荐使用普通用户登录,然后通过sudo或su命令来获取临时的管理员权限,在某些特定场景下,如系统初始设置或故障恢复,直接以root用户登录仍然是必要的,本文将详细介绍在CentOS中实现root登录的几种方法,并探讨其背后的安全最佳实践。

启用并直接以Root用户登录SSH
在较新的CentOS版本(如7、8、9)中,出于安全考虑,默认情况下是禁止通过SSH直接使用密码以root用户登录的,你需要手动修改SSH的配置文件来启用此功能。
操作步骤:
-
使用普通用户登录服务器:你需要有一个具有
sudo权限的普通用户账户,通过SSH登录到你的CentOS服务器。 -
编辑SSH配置文件:使用
sudo权限编辑sshd_config文件,该文件位于/etc/ssh/目录下。sudo vi /etc/ssh/sshd_config
这里使用
vi编辑器,你也可以使用nano或其他你熟悉的编辑器。 -
修改
PermitRootLogin参数:在文件中找到#PermitRootLogin prohibit-password这一行,默认情况下它可能是被注释掉的(以开头),并且值可能是prohibit-password,你需要做两件事:- 删除行首的,取消注释。
- 将参数值从
prohibit-password或no修改为yes。
修改后的行应如下所示:
PermitRootLogin yes参数值说明:
yes: 允许使用密码和SSH密钥以root用户登录。prohibit-password: 允许使用SSH密钥登录,但禁止使用密码登录,这是比yes更安全的选择。no: 完全禁止root用户登录。
-
保存并退出编辑器:在
vi中,按下Esc键,然后输入wq并按回车键,即可保存更改并退出。 -
重启SSH服务:为了让配置生效,必须重启SSH守护进程。
sudo systemctl restart sshd
完成以上步骤后,你就可以使用root用户名和对应的密码直接通过SSH登录到CentOS服务器了。

ssh root@<你的服务器IP地址>
使用su命令切换至Root用户
这是最传统的获取root权限的方式,你首先以普通用户身份登录系统,然后在终端中使用su命令来切换用户。
操作步骤:
-
以普通用户登录:通过SSH或控制台登录你的CentOS服务器。
-
执行
su命令:在终端中输入以下命令并按回车:su -
系统会提示你输入
root用户的密码,输入正确密码后,你的命令提示符通常会从变为,表示当前已切换到root用户环境。
su 与 su - 的区别:
| 命令 | 说明 |
|---|---|
su |
切换到root用户,但不改变当前的环境变量(如PATH),你仍然保留着原用户的环境设置。 |
su - 或 su -l |
切换到root用户,并完全加载root用户的环境变量,就像root用户直接登录一样,这是推荐的做法,因为它能确保所有系统路径和设置都正确无误。 |
当你完成管理员操作后,可以输入exit命令退出root会话,返回到原来的普通用户。
推荐实践:使用sudo命令执行特权操作
sudo(Superuser Do)是现代Linux系统中最推荐的管理方式,它允许一个被授权的普通用户以root(或其他用户)的身份来执行单个命令,而无需知道root密码。
sudo的优势:
- 安全性:不需要共享
root密码,降低了密码泄露的风险。 - 审计性:所有通过
sudo执行的命令都会被记录在日志文件中(通常是/var/log/secure),便于追踪和审查。 - 灵活性:可以精细地控制用户可以执行哪些命令,实现最小权限原则。
操作步骤:
-
确保用户在
wheel组中:在CentOS中,wheel组是默认拥有sudo权限的用户组,你可以使用以下命令将一个用户添加到wheel组:
sudo usermod -aG wheel <你的用户名>
将用户
centos添加到wheel组:sudo usermod -aG wheel centos
添加后,用户需要注销并重新登录才能使权限生效。
-
使用
sudo执行命令:在任何需要root权限的命令前加上sudo即可。sudo yum update -y sudo systemctl restart nginx
首次使用
sudo时,系统会提示你输入当前用户的密码(而不是root密码),在一定时间内(默认为5分钟)再次使用sudo则无需重复输入密码。
安全考量与最佳实践
虽然直接root登录很方便,但在生产环境中应极力避免,以下是几点重要的安全建议:
- 首选
sudo:始终优先使用sudo来进行日常管理操作,它是兼顾效率与安全的最佳选择。 - 禁用密码Root登录:如果确实需要远程
root访问,建议配置SSH密钥认证,并将sshd_config中的PermitRootLogin设置为prohibit-password,这样既方便了管理,又避免了暴力破解密码的风险。 - 使用SSH密钥:为所有用户(特别是管理员)配置SSH密钥对认证,并完全禁用密码认证(
PasswordAuthentication no)。 - 定期审查:定期检查
/var/log/secure日志,关注异常的登录尝试和sudo使用记录。
相关问答 (FAQs)
直接以Root用户登录和使用sudo有什么本质区别?哪个更好?
回答: 本质区别在于权限的授予方式和持久性。
- 直接Root登录:一旦登录,你获得的是一个完整、持久的管理员会话,所有后续操作都在
root权限下进行,存在误操作导致系统破坏的高风险,且需要共享root密码,安全性较低。 - 使用
sudo:是按需授予的临时权限,你只在特定的命令前加上sudo,该命令才会以root权限执行,它使用你自己的密码进行认证,操作会被详细记录,并且可以精细控制权限范围。 上文小编总结是,sudo远远优于直接Root登录,它遵循了最小权限原则,极大地提升了系统的安全性和可审计性,是所有生产环境和有安全意识的管理员的首选。
我忘记了Root密码,该如何重置?
回答: 重置root密码需要通过单用户模式来完成,基本流程如下:
- 重启服务器,在GRUB启动菜单出现时,按
e键进入编辑模式。 - 找到Linux内核启动行(通常以
linux或linux16开头),使用方向键移动到该行。 - 修改启动参数:找到
ro(可能伴随rhgb quiet),将其修改为rw init=/sysroot/bin/sh,这会告诉系统以读写模式挂载根文件系统,并直接启动一个shell。 - 启动系统:按
Ctrl + X组合键,系统将进入单用户模式的shell。 - 切换根目录:执行命令
chroot /sysroot。 - 重置密码:执行命令
passwd root,然后按提示输入新的root密码。 - 更新SELinux上下文:执行
touch /.autorelabel,确保重启后SELinux能正确重新标记文件。 - 退出并重启:先输入
exit退出chroot环境,再输入exit或reboot重启系统,重启完成后,你就可以用新密码登录了。