深刻理解root用户的角色与责任
在深入具体操作之前,我们必须首先明确root用户的本质,root是超级用户,其用户ID(UID)为0,不受任何文件权限和系统机制的约束,它可以读取、修改、删除系统中的任何文件,可以启动或停止任何服务,也可以更改系统硬件时钟,正是这种“无限制”的特性,使得root账户成为黑客攻击的首要目标,一个安全的系统,其root账户必然是受到最严格保护的,我们的核心原则应该是:最小化使用root权限,最大化其安全防护。

root密码的设置与管理
密码是保护root账户的第一道,也是最重要的一道防线,一个强健的密码策略是centos系统设置root的基础。
设置或更改root密码
在CentOS的全新安装过程中,系统会提示您为root用户设置密码,如果您跳过了这一步,或者后续需要修改密码,可以使用以下命令:
sudo passwd root
执行此命令后,系统会提示您输入当前用户的密码(用于确认您有sudo权限),然后两次输入新的root密码,输入时,屏幕上不会显示任何字符,这是正常的安全措施。
构建强密码的策略
一个弱密码,如“123456”、“root”或“password”,等同于将系统大门敞开,一个强密码应具备以下特征:
- 足够长度:至少12位,16位或更佳。
- 复杂性:包含大写字母、小写字母、数字和特殊符号(如!@#$%^&*)。
- 无规律性:避免使用生日、姓名、常见单词或键盘上的连续字符。
- 唯一性:不要在其他网站或服务上使用相同的密码。
建议使用密码管理器来生成和存储这些复杂的密码。
SSH远程登录root权限的精细控制
对于服务器而言,绝大多数管理操作都是通过SSH(Secure Shell)远程进行的,默认情况下,CentOS允许root用户通过密码直接SSH登录,这在生产环境中是极不推荐的,最佳实践是:禁用root用户的直接SSH登录。
操作流程如下:
创建一个普通用户并赋予sudo权限

您需要一个具有sudo权限的普通账户作为日常登录使用,如果尚未创建,请执行:
# 创建新用户,'admin' sudo adduser admin # 为新用户设置密码 sudo passwd admin # 将用户添加到 'wheel' 组,该组默认拥有sudo权限 sudo usermod -aG wheel admin
配置SSH服务
使用您刚刚创建的普通用户(或已有的其他sudo用户)登录系统,然后编辑SSH的配置文件:
sudo vi /etc/ssh/sshd_config
在文件中找到 #PermitRootLogin yes 这一行,删除前面的号(取消注释),并将 yes 改为 no。
# 修改前
#PermitRootLogin yes
# 修改后
PermitRootLogin no 重启SSH服务使配置生效
sudo systemctl restart sshd
重要提示:在执行第3步之前,请务必开启一个新的终端窗口,用您的普通用户账户测试SSH登录,并确认sudo命令工作正常,一旦确认无误,再关闭当前的root会话,否则,如果您配置有误,可能会将自己锁在系统之外。
善用sudo:现代系统管理的金标准
禁用root直接登录后,sudo(superuser do)命令就成了我们执行特权操作的主要工具,它允许授权用户以其他用户(通常是root)的身份执行命令。
sudo的优势在于:
- 权限最小化:用户只在需要时才提升权限,且可以精确控制能执行的命令。
- 操作可追溯:所有通过
sudo执行的命令都会被详细记录在日志中(/var/log/secure),便于审计和故障排查。 - 无需共享root密码:管理员只需使用自己的密码即可获得授权,大大降低了root密码泄露的风险。
在CentOS中,将用户添加到wheel组是授予其sudo权限的标准做法,如前文所述,您可以通过编辑/etc/sudoers文件(务必使用sudo visudo命令,它能进行语法检查)来定义更精细的权限规则。
为了更清晰地理解su和sudo的区别,请参考下表:

| 特性 | su (Switch User) | sudo (Superuser Do) |
|---|---|---|
| 切换方式 | 切换到指定用户的环境,默认为root | 以指定用户(默认为root)的身份执行单条命令 |
| 密码验证 | 需要输入目标用户的密码(如root密码) | 需要输入当前用户的密码 |
| 日志审计 | 日志通常只记录su命令的发起,不记录后续操作 | 详细记录执行了哪条命令、由谁执行、何时执行 |
| 权限控制 | 一旦切换成功,便拥有目标用户的全部权限 | 可在sudoers文件中精细配置,限制用户可执行的命令 |
| 推荐场景 | 临时需要长时间以root身份操作时(不推荐) | 日常管理中执行特权命令的首选方式 |
CentOS系统设置root的综合安全策略
一个完整的centos系统设置root安全方案,应综合运用多种手段:
- 强化密码策略:如前所述,使用长而复杂的密码,并定期更换。
- 禁用SSH直接root登录:这是服务器安全的基本准则。
:养成使用普通账户登录,通过 sudo提权的习惯。- 限制访问来源:利用防火墙(如
firewalld)或TCP Wrappers(/etc/hosts.allow,/etc/hosts.deny)限制SSH服务的访问IP范围,只允许可信的网络接入。 - 定期更新系统:及时应用安全补丁,修复可能被利用来提权的漏洞。
- 使用SSH密钥认证:相较于密码,SSH密钥对认证方式更为安全,可以为普通用户设置密钥登录,并进一步禁用密码认证。
相关问答FAQs
问1:如果不慎忘记了root密码,该如何重置?
答: 重置root密码需要通过进入系统的单用户模式或救援模式来完成,基本步骤如下:
- 重启服务器,在GRUB引导菜单出现时,按
e键进入编辑模式。 - 找到以
linux或linux16或linuxefi开头的内核启动行,使用方向键移动到该行末尾。 - 添加
rd.break或init=/bin/bash参数,然后按Ctrl + X启动系统。 - 系统会进入一个临时的shell,此时根文件系统是只读的,需要重新挂载为可读写模式:
mount -o remount,rw /sysroot
- 切换到原始系统环境:
chroot /sysroot
- 现在可以重置密码了:
passwd root
按提示输入新密码两次。
- 非常重要的一步:由于修改了
/etc/shadow文件,需要让SELinux在重启后自动重新标记文件上下文,否则可能无法正常登录。touch /.autorelabel
- 退出chroot环境,重启系统:
exit reboot
系统重启时会进行SELinux relabel,过程可能需要几分钟时间,之后您就可以用新密码登录了。
问2:su - 和 sudo su - 有什么本质区别?
答: 两者的核心区别在于认证方式和审计日志。
su -:此命令会要求您输入root用户的密码,一旦认证成功,您就完全切换到了root用户身份,在系统日志中,只会记录您的用户从哪个终端执行了su命令,但之后在root会话中执行的所有操作,日志看起来都像是root自己操作的,无法追溯到原始用户。sudo su -:此命令要求您输入您当前用户的密码(前提是您在sudoers文件中有权限)。sudo会先验证您的身份,然后以root权限执行su -命令,关键在于,sudo会将这次操作“以用户xxx的身份执行了/bin/su -”详细记录在/var/log/secure日志中,这提供了清晰的审计跟踪,明确了是谁在何时获取了root权限,从安全和审计的角度看,sudo su -是远优于su -的做法。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复