在centos系统中,用户账户管理与密码安全是维护服务器稳定性和数据安全的核心环节,合理使用useradd
命令创建用户并配置密码,不仅能提升系统管理效率,还能有效防范潜在的安全风险,本文将从实际操作出发,深入解析如何通过命令行工具创建用户、设置密码,并遵循最佳安全实践。
一、创建用户的基础命令与密码设置
useradd
是Linux系统中用于创建新用户的工具,以下是一个典型的新用户创建流程:

- sudo useradd -m testuser
通过-m
参数,系统会自动为新用户创建家目录(如/home/testuser
),此时用户虽已存在,但尚未设置密码,需通过passwd
命令完成密码配置:
- sudo passwd testuser
执行后,系统会提示输入并确认密码,需注意,密码输入时不会显示字符,确保输入过程的安全性。
密码复杂度要求
CentOS默认遵循PAM(Pluggable Authentication Modules)策略,要求密码满足以下条件:
1、长度至少8字符;
2、包含大小写字母、数字及特殊符号;

3、不与用户名或旧密码重复。
若密码不符合规则,系统会提示错误并拒绝设置。
二、密码安全的最佳实践
避免使用弱密码
弱密码(如123456
、password
)是服务器被入侵的常见原因,建议采用以下方法生成强密码:
随机密码生成工具:使用openssl rand -base64 12
生成12位随机字符串。
短语组合:选取多个不相关的单词组合(如Coffee$Rainbow!32
),既易记又满足复杂度要求。
定期更新密码
通过chage
命令强制用户定期修改密码:

- sudo chage -M 90 testuser # 每90天必须更换密码
- sudo chage -d 0 testuser # 下次登录时强制修改密码
此策略可降低密码长期泄露的风险。
限制密码尝试次数
编辑PAM配置文件/etc/pam.d/system-auth
,添加以下行以启用账户锁定机制:
- auth required pam_faillock.so preauth silent deny=5 unlock_time=600
- auth sufficient pam_faillock.so authfail deny=5 unlock_time=600
上述配置会在5次失败登录后锁定账户10分钟,防止暴力破解。
三、进阶安全配置
禁用默认Shell访问
对于仅需执行特定任务的用户(如数据库备份),可将其Shell设置为/sbin/nologin
:
- sudo useradd -s /sbin/nologin backupuser
此类用户无法通过SSH登录系统,但可通过su
或sudo
切换权限。
使用SSH密钥替代密码
对于管理员账户,推荐禁用密码登录并改用SSH密钥认证:
1、生成密钥对:ssh-keygen -t ed25519
;
2、将公钥上传至服务器:ssh-copy-id user@host
;
3、编辑/etc/ssh/sshd_config
,设置PasswordAuthentication no
并重启SSH服务。
审计用户活动
通过last
命令查看登录记录,或使用auditd
工具监控敏感操作:
- sudo auditctl -w /etc/shadow -p wa -k shadow_file
此命令会记录对/etc/shadow
文件(存储密码哈希)的所有写入和属性修改操作。
四、常见问题与解决方案
问题1:用户忘记密码
管理员可通过root权限重置密码:
- sudo passwd testuser
重置后建议用户立即修改密码。
问题2:账户被锁定
检查失败登录记录:
- sudo faillock --user testuser
手动解锁账户:
- sudo faillock --user testuser --reset
问题3:密码策略不生效
确认PAM模块配置是否正确,并检查/etc/login.defs
中的参数(如PASS_MAX_DAYS
),若使用第三方安全工具(如SELinux),需确保其未拦截策略应用。
五、个人观点
密码管理是系统安全的第一道防线,但其重要性常被低估,许多管理员倾向于简化密码规则以方便操作,却忽视了潜在风险,在CentOS环境下,结合useradd
、passwd
与PAM模块的灵活配置,完全可以在安全性与易用性之间找到平衡,通过自动化脚本批量创建用户并生成随机密码,既能减少人为错误,又能确保密码强度,定期审计与更新安全策略应成为运维流程的标准环节——安全从来不是“一次性配置”,而是持续优化的过程。