Linux下普通用户能否修改其它用户的密码?

Linux下密码通过 /etc/passwd 文件进行管理,该文件只有root用户有rw权限,普通用户是通过带有Setuid的passwd程序对自己的密码进行修改的,setuid可能将用户的权限提升到root,既然只是修改/etc/passwd文件,而普通用户在运行passwd程序时权限已提升至root,为何普通用户不能更改其它用户的密码,而root用户就可以呢?

阅读 7.2k
1 个回答

因为 passwd 在修改密码之前会查看当前用户是否匹配要修改的用户,否则就不会往下执行。

会显示“您不能查看或更改xxx的密码信息。”之类的提示。这个提示是passwd修改密码之前的判断,而不是在修改shadow的时候系统提示的权限不足。

而对于普通用户是没有办法修改 passwd 的源码的(只有二进制文件才能设置setuid),因为没有权限,所以没办法修改passwd的执行流程,所以没办法绕过passwd对用户的校验,因此不能够修改其他人的密码。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏