Linux下密码通过 /etc/passwd 文件进行管理,该文件只有root用户有rw权限,普通用户是通过带有Setuid的passwd程序对自己的密码进行修改的,setuid可能将用户的权限提升到root,既然只是修改/etc/passwd文件,而普通用户在运行passwd程序时权限已提升至root,为何普通用户不能更改其它用户的密码,而root用户就可以呢?
Linux下密码通过 /etc/passwd 文件进行管理,该文件只有root用户有rw权限,普通用户是通过带有Setuid的passwd程序对自己的密码进行修改的,setuid可能将用户的权限提升到root,既然只是修改/etc/passwd文件,而普通用户在运行passwd程序时权限已提升至root,为何普通用户不能更改其它用户的密码,而root用户就可以呢?
6 回答3.6k 阅读
2 回答3.4k 阅读✓ 已解决
4 回答2.2k 阅读
2 回答856 阅读✓ 已解决
3 回答516 阅读
1 回答757 阅读✓ 已解决
2 回答517 阅读✓ 已解决
因为
passwd
在修改密码之前会查看当前用户是否匹配要修改的用户,否则就不会往下执行。会显示“您不能查看或更改xxx的密码信息。”之类的提示。这个提示是
passwd
修改密码之前的判断,而不是在修改shadow
的时候系统提示的权限不足。而对于普通用户是没有办法修改
passwd
的源码的(只有二进制文件才能设置setuid
),因为没有权限,所以没办法修改passwd
的执行流程,所以没办法绕过passwd
对用户的校验,因此不能够修改其他人的密码。