linux命令行界面切换用户密码
linux命令行界面切换用户密码详细介绍
在 Linux 命令行中切换用户并修改密码的核心操作可分为以下几个场景,涵盖权限管理、密码复杂度配置及安全实践:
一、切换用户身份的核心命令
1.
su 命令:完全切换用户环境
bash
- root
- username
su与su -的区别:su仅切换身份,保留原用户的环境变量和工作目录。su -(或su --login)会加载目标用户的完整环境(如~/.bashrc),工作目录变为目标用户的主目录。- 示例对比:bash
user@host ~$ root
Password:
root@host user$
/home/user
user@host ~$ - root
Password:
root@host ~$
/root
2.
sudo 命令:临时提升权限
bash
username
- 权限配置:
- 普通用户需加入
sudo组(Debian/Ubuntu)或wheel组(CentOS/RHEL)。 - 通过
visudo编辑/etc/sudoers实现精细化授权:bashalice ALL NOPASSWD: /usr/bin/passwd
bob root /sbin/reboot
- 普通用户需加入
二、修改密码的核心操作
1.
普通用户修改自身密码
bash
- 流程:
- 输入当前用户密码验证身份。
- 输入新密码(需符合复杂度要求)。
- 确认新密码。
2.
管理员修改其他用户密码
bash
- root
username
username
- root 权限优势:
- 无需知道目标用户的旧密码。
- 可强制设置新密码,例如:bash
username
3.
密码复杂度要求
- 通用规则:
- 长度 ≥8 位(部分系统要求 ≥10 位)。
- 包含至少两种字符类型(大写字母、小写字母、数字、特殊字符)。
- 不能与用户名或旧密码重复。
- 查看当前策略:bash
/etc/pam.d/common-password
/etc/pam.d/system-auth
- 修改复杂度策略(需 root 权限):bash
/etc/pam.d/common-password
三、高级操作与安全实践
1.
锁定 / 解锁用户账户
bash
username
username
2.
设置密码过期策略
bash
username
chage username
username
3.
生成随机密码
bash
openssl rand
openssl rand
4.
安全增强措施
- 限制 su 命令使用:bash
admin
admin username
dpkg-statoverride root admin /bin/su
- 禁用 root 直接登录:bash
/etc/ssh/sshd_configPermitRootLogin no
systemctl restart sshd
- 使用密钥认证替代密码:bash
ssh-keygen rsa
ssh-copy-id username@server
四、常见问题与解决方案
| 问题描述 | 可能原因 | 解决方案 |
|---|---|---|
su: Authentication failure |
密码错误或用户被锁定 | 确认密码正确性,使用sudo passwd -u解锁用户 |
passwd: Permission denied |
普通用户尝试修改其他用户密码 | 使用sudo或切换到 root 执行 |
| 密码不符合复杂度要求 | 新密码未满足策略 | 参考密码复杂度规则重新设置 |
| 忘记 root 密码 | 密码丢失 | 进入单用户模式重置: 1. 重启系统,在 GRUB 菜单选择恢复模式 2. 挂载根目录为可写: mount -o remount,rw /3. 执行 passwd root设置新密码 |
五、不同发行版的注意事项
| 发行版 | 特点 | 示例命令 |
|---|---|---|
| Ubuntu | 默认禁用 root 直接登录 | sudo passwd root 启用 root 密码 |
| CentOS | 使用wheel组管理 sudo 权限 |
sudo usermod -aG wheel username |
| Arch Linux | 密码复杂度默认较宽松 | 需手动配置/etc/pam.d/system-auth |
通过上述操作,您可以灵活管理 Linux 系统中的用户切换与密码安全。建议定期审计用户权限,遵循最小权限原则,并使用工具如auditd监控关键操作。