在CentOS系统中,新建具有sudo权限的非root账户是提升服务器安全性的标准操作,核心步骤是通过useradd创建用户,并使用usermod或visudo赋予其sudo执行权限。
直接登录root账户进行日常运维存在巨大的安全风险,一旦凭证泄露,攻击者将获得系统的最高控制权,业内专家指出,最小权限原则是信息安全的基础,因此为每位管理员或开发者分配独立的sudo账户已成为行业共识,本文将通过具体的命令操作,指导你完成这一关键配置,确保你的Linux服务器既安全又易于管理。
为什么需要创建sudo用户而非直接使用root
许多初学者倾向于直接使用root账户登录,认为这样操作最便捷,这种做法在生产环境中是被严格禁止的,root账户拥有系统的绝对控制权,任何误操作都可能导致系统崩溃或数据永久丢失,相比之下,sudo用户拥有受限的管理权限,只有在执行特定命令时才需要提权,这为系统增加了一层安全屏障。
安全性与审计的双重保障
使用独立的sudo账户可以实现操作的可追溯性,当多个管理员共同维护服务器时,每个账户的操作日志都是独立的,如果发生安全事件,可以通过审计日志精准定位到具体的人员和操作时间,这种细粒度的权限控制,是大型团队运维的标准配置。
避免误操作导致的系统损坏
root账户下的命令执行没有任何缓冲,输入错误的rm命令可能会直接删除系统核心文件,而sudo用户默认只能执行普通命令,只有在明确调用sudo前缀时才能执行管理命令,这种机制迫使操作者在执行高危命令前进行二次确认,大大降低了误删数据的风险。
CentOS添加用户教程:新建具有sudo权限的非root账户
在CentOS 7及以上版本中,创建用户并赋予sudo权限的过程非常直观,你需要通过SSH连接到服务器,或者在本地终端打开命令行界面,确保你当前登录的是root账户,或者拥有sudo权限的现有账户。
第一步:创建新用户
使用useradd命令创建新用户,建议为用户指定一个有意义的用户名,避免使用admin、test等通用名称,以减少被暴力破解的风险。
useradd -m -s /bin/bash newuser
这条命令中,-m参数会自动创建用户的主目录,-s /bin/bash指定用户的默认Shell为Bash,这是Linux中最常用的Shell环境,创建完成后,系统会在/home目录下生成对应的用户文件夹。
第二步:设置用户密码
创建用户后,该账户处于锁定状态,必须设置密码才能登录,使用passwd命令为新用户设置强密码。
passwd newuser
系统会提示你输入两次密码,Linux终端在输入密码时不会显示任何字符,包括星号,这是正常的安全机制,请确保密码包含大小写字母、数字和特殊符号,长度至少12位,以符合现代安全标准。
第三步:赋予sudo权限
赋予sudo权限有两种主要方法,第一种是直接修改sudoers文件,第二种是将用户加入wheel组,在CentOS系统中,wheel组默认拥有sudo权限,因此推荐第二种方法,因为它更易于管理和撤销。
usermod -aG wheel newuser
-a参数表示追加,-G参数表示指定附加组,这条命令将newuser用户添加到wheel组中,无需重启服务,配置立即生效。
验证sudo权限
你可以切换到新用户来验证权限是否生效。
su - newuser
切换到新用户后,尝试执行一条需要root权限的命令,例如查看系统日志。
sudo tail -f /var/log/messages
系统会提示你输入newuser的密码,输入正确后,命令即可成功执行,这表明sudo权限配置成功。
CentOS添加用户教程:配置sudoers文件的进阶技巧
虽然加入wheel组是推荐做法,但在某些特殊场景下,你可能需要更精细地控制sudo权限,这时,直接编辑sudoers文件是必要的。
使用visudo编辑安全
严禁直接使用vi或nano编辑/etc/sudoers文件,如果语法错误,可能导致所有sudo用户无法使用权限,甚至无法恢复,必须使用visudo命令,它会在保存前检查语法错误。
visudo
打开文件后,找到wheel组的配置行,通常如下所示:
%wheel ALL=(ALL) ALL
这表示wheel组的所有用户可以执行任何命令,如果你希望限制特定用户只能执行特定命令,可以添加如下规则:
newuser ALL=(ALL) /usr/bin/systemctl, /usr/bin/journalctl
这表示newuser用户只能执行systemctl和journalctl命令,其他命令仍需root权限或无法执行,这种细粒度控制适用于只需要管理Web服务或查看日志的开发者。
免密码sudo的配置
在某些自动化脚本或CI/CD流程中,可能需要免密码执行sudo命令,为了安全起见,建议仅对特定命令配置免密码权限。
newuser ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx
这条规则允许newuser用户无需输入密码即可重启Ngin服务,这仅适用于特定命令,而非所有命令,从而在便利性与安全性之间取得平衡。
CentOS添加用户教程:常见问题排查与最佳实践
在实际操作中,可能会遇到权限拒绝或配置不生效的问题,以下是常见的排查步骤和优化建议。
权限拒绝的处理
如果执行sudo命令时提示“user is not in the sudoers file”,请检查用户是否已正确加入wheel组。
groups newuser
如果输出中没有wheel,说明添加组失败,请重新执行usermod命令,检查/etc/sudoers文件中是否包含%wheel行的注释,确保未被禁用。
SSH密钥登录优化
为了进一步提升安全性,建议禁用root账户的SSH密码登录,仅允许密钥认证,为sudo用户配置SSH密钥,避免频繁输入密码。
ssh-copy-id newuser@your_server_ip
配置完成后,在/etc/ssh/sshd_config中设置PermitRootLogin no,并重启SSH服务,这样,即使root密码泄露,攻击者也无法直接通过SSH登录。
定期审计用户权限
随着团队规模扩大,用户权限可能变得混乱,建议定期审查sudoers文件和用户组配置,移除离职员工的账户,撤销不必要的sudo权限,据工信部数据,内部人员误操作或恶意行为是数据安全事件的主要来源之一,严格的权限管理是防范此类风险的关键。
CentOS添加用户教程:Q&A模块
如何删除具有sudo权限的用户?
删除用户可以使用userdel命令,如果希望同时删除用户的主目录和邮件池,请使用-r参数。
userdel -r newuser
删除后,该用户的所有文件将被清除,sudo权限也随之失效,如果仅需禁用账户而不删除文件,可以使用passwd -l newuser锁定密码。
sudo权限配置后未生效怎么办?
sudo权限配置通常立即生效,无需重启服务,如果未生效,首先检查用户是否已退出当前会话并重新登录,使用visudo -c命令检查sudoers文件语法是否正确,确认用户是否已正确加入wheel组或sudoers文件中是否有对应的规则。
如何限制sudo用户只能执行特定目录的文件?
sudo本身不支持直接限制文件目录,但可以通过配置sudoers文件中的命令路径来实现间接限制,只允许执行特定脚本目录下的脚本,可以使用Linux的ACL(访问控制列表)或SELinux策略来进一步限制用户对特定目录的访问权限,从而实现更细粒度的控制。
首发原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/474319.html



