linux用户切换
在 Linux 系统中,/etc/shadow
文件存储了用户的加密密码和其他安全相关信息,因此默认只有 root 用户 才有权限读取。当你尝试用普通用户身份查看时,会收到 Permission denied
错误。
如何查看 /etc/shadow
文件?
方法 1:使用 sudo
临时提权
sudo cat /etc/shadow
系统会提示输入当前用户的密码(需有 sudo
权限)。
方法 2:切换到 root 用户
sudo -i # 切换到 root 用户
cat /etc/shadow # 直接查看
exit # 退出 root 用户
/etc/shadow
文件格式解析
每行代表一个用户,格式如下(以 :
分隔的 9 个字段):
username:encrypted_password:last_change:min_age:max_age:warn:inactive:expire:reserved
示例:
root:$6$T7/...:19203:0:99999:7:::
user:$6$xyz...:19210:0:30:5:10:19452:
字段说明:
字段 | 含义 |
---|---|
1 | 用户名(如 root , user ) |
2 | 加密密码(格式:$算法$盐值$哈希值 )* 或 ! 表示账户被锁定 |
3 | 上次修改密码的天数(从 1970-1-1 开始计算) |
4 | 密码最短使用期限(0 表示可随时修改) |
5 | 密码最长有效期(99999 表示永不过期) |
6 | 密码过期前的警告天数 |
7 | 密码过期后的宽限天数 |
8 | 账户绝对过期日期(YYYY-MM-DD) |
9 | 保留字段 |
常见操作示例
-
检查特定用户的密码状态:
sudo grep username /etc/shadow
-
判断账户是否被锁定:
sudo passwd -S username # 输出中包含 "locked" 或 "password set"
-
修改密码策略(需 root 权限):
sudo chage -l username # 查看策略 sudo chage -M 90 username # 设置密码 90 天后过期
安全注意事项
-
不要直接编辑
/etc/shadow
!
修改用户密码或策略应使用以下命令:sudo passwd username # 修改密码 sudo usermod -e YYYY-MM-DD username # 设置账户过期日期
-
备份文件:
修改前建议备份:sudo cp /etc/shadow /etc/shadow.bak
-
权限控制:
/etc/shadow
的权限应为640
(-rw-r-----
),所有者是root
,组为shadow
:sudo ls -l /etc/shadow
为什么普通用户不能读取?
- 该文件包含密码哈希值,泄露可能导致暴力破解风险。
- 系统通过严格权限(
-rw-r-----
)和shadow
用户组实现保护。
如果需要审计用户密码策略,建议使用 sudo chage -l username
等安全命令替代直接查看文件。