在CentOS系统的日常运维和安全加固工作中,禁用不必要的用户账户和服务是降低系统风险、减少资源占用的核心操作。冗余的用户账户可能存在弱密码、长期未登录等安全隐患,多余的系统服务不仅消耗CPU、内存资源,还可能暴露不必要的网络端口,给攻击者留下可乘之机。合理清理这些冗余项,能让系统运行更轻量、更安全。

一、禁用不必要的用户账户
1. 查看现有用户账户
首先可以通过查看/etc/passwd文件获取系统所有用户账户信息,该文件每行记录一个用户,格式为用户名:密码占位符:用户ID:组ID:用户描述:家目录:登录shell。也可以直接查看/etc/passwd中shell为可登录类型的账户:
# 查看所有用户账户 cat /etc/passwd # 查看可登录的普通用户(排除系统用户和nologin用户) grep -v /sbin/nologin /etc/passwd | grep -v /bin/false
2. 锁定不必要的用户账户
对于确认不需要登录的用户账户,不建议直接删除,优先选择锁定账户,避免误删导致依赖该账户的服务异常。锁定账户后,用户将无法登录系统,密码验证会直接失败。
# 锁定指定用户,比如锁定testuser账户 passwd -l testuser # 查看用户锁定状态,输出中包含LK字样表示已锁定 passwd -S testuser
如果需要彻底禁止用户登录,也可以修改用户的登录shell为/sbin/nologin:
# 修改testuser的登录shell为nologin usermod -s /sbin/nologin testuser
3. 删除确认无用的用户账户
如果确认某个用户账户及其关联文件完全无用,可以执行删除操作,删除时会同时删除用户的家目录和邮件目录:
# 删除testuser账户及关联目录 userdel -r testuser
二、禁用不必要的系统服务
1. 查看当前运行的服务
CentOS 7及以上版本使用systemd作为服务管理工具,可以通过以下命令查看系统所有服务的状态:
# 查看所有服务状态 systemctl list-units --type=service --all # 查看当前正在运行的服务 systemctl list-units --type=service --state=running
2. 停止并禁用非必需服务
对于不需要的服务,先停止当前运行的服务,再设置开机不自动启动,避免重启后服务再次运行。比如禁用telnet服务(明文传输不安全,通常用ssh替代):
# 停止telnet服务 systemctl stop telnet.socket # 禁用telnet服务开机自启 systemctl disable telnet.socket # 确认服务状态,输出中loaded部分显示disabled表示已禁用 systemctl status telnet.socket
常见的可禁用非必需服务包括:telnet、rsh、rlogin、tftp、cups(无打印需求时)、avahi-daemon(无局域网服务发现需求时)等。
3. 临时启用已禁用的服务
如果后续需要临时使用已禁用的服务,可以手动启动,启动后本次运行有效,重启后依然不会自动启动:
# 临时启动telnet服务 systemctl start telnet.socket
三、操作注意事项
- 操作前建议备份
/etc/passwd、/etc/shadow等用户相关配置文件,以及服务配置文件,避免误操作后无法恢复。 - 禁用服务前先确认服务的作用,比如sshd服务是远程登录的核心服务,绝对不能禁用,否则会失去远程管理权限。
- 如果是生产环境,建议先在测试环境验证操作影响,确认无异常后再在正式环境执行。
- 禁用用户账户前,确认该账户没有被任何系统服务作为运行用户使用,避免服务启动失败。
安全加固是一个持续的过程,除了禁用不必要的用户和服务,还需要定期更新系统补丁、配置防火墙规则、设置合理的密码策略,全方位提升CentOS系统的安全性。