passwd 程序工作原理

由于需要写一个程序用于虚拟主机用户修改用户密码,就看了一下 passwd 程序的源代码。这里简单记录一下 passwd 的工作原理。

由于 passwd 隶属于 root 用户 root 组,且又有 s 标记,所以自动运行在 root 用户下。(有 s 标记的程序在执行时会被 setuid 和 setgid 为文件系统上这个文件的 uid 和 gid)。

passwd heiher

1. 调用 getpass() 从终端获取旧密码和两次新密码
2. 比较两个新密码,相同继续,否则重输
3. 使用 crypt() 加密密码原文为密文
4. 从 /etc/shadow 读取旧密码密文
5. 比较两个密文串,如果相同继续,否则输出错误信息并退出
6. 加密新密码,替换 /etc/shadow 中旧密码串
7. 退出

Over!

One thought on “passwd 程序工作原理”

Leave a Reply

Your email address will not be published. Required fields are marked *