Linux中的口令文件
?=========================
实验平台:Fedora 11
[canlynet@dc include]$ vi pwd.h[canlynet@dc include]$ vim /etc/passwd[canlynet@dc include]$ head /etc/passwdroot:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologinadm:x:3:4:adm:/var/adm:/sbin/nologinlp:x:4:7:lp:/var/spool/lpd:/sbin/nologinsync:x:5:0:sync:/sbin:/bin/syncshutdown:x:6:0:shutdown:/sbin:/sbin/shutdownhalt:x:7:0:halt:/sbin:/sbin/haltmail:x:8:12:mail:/var/spool/mail:/sbin/nologinuucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin?每行都包括了7个字段,比如第一行:
1、root -- 用户名
2、x???? -- 加密口令(占位字符)
3、0???? -- 数值用户ID
4、0???? -- 数值组ID
5、root -- 注释字段
6、root -- 初始工作目录
7、/bin/bash -- 初始shell(用户程序)
再看/usr/include/pwd.h中定义的passwd结构(与之对应):
/* The passwd structure. */struct passwd{ char *pw_name;/* Username. */ char *pw_passwd;/* Password. */ __uid_t pw_uid;/* User ID. */ __gid_t pw_gid;/* Group ID. */ char *pw_gecos;/* Real name. */ char *pw_dir;/* Home directory. */ char *pw_shell;/* Shell program. */};?
?? ?加密口令经过单向加密算法存放在另一个文件中,这个文件不是一般用户可以读取的。
??? shell字段指定一个可执行的程序名,如果不指定,使用默认值,通常是/bin/sh。/sbin/nologin的作用是导致登录失败。
??? 我们知道,shell程序其实也是c语言编写的应用程序,利用I/O函数,我们完全可以读取ASCII文件中每一行代码,也可以对字符串进行解析操作。