加密口令是经单向加密算法处理过的用户口令副本。因为此算法是单向的,所以不能从加密口令猜测到原来的口令。
历史上使用的算法总是从64字符集中产生13个可打印字符。某些较新的系统使用md5算法对口令加密,为每个加密口令产生31个字符。
给出一个加密口令,找不到一种算法可以将其逆转到普通文本口令(普通文本口令是在PassWord:提示符后键入的口令)。但是可以对口令进行猜测,将猜测的口令经单向算法变换成加密形式,然后将其与用户的加密口令相比较。
为使企图这样做的人难以获得原始资料(加密口令),现在,某些系统将加密口令存放在另一个通常称为阴影口令(shadow password)的文件中。该文件至少要包含用户名和加密口令。与该口令相关的其他信息也可存放在该文件中(表6-2)。
只有用户登录名和加密口令这两个字段是必需的。其他字段用于控制口令的改动频率(称为口令的衰老)以及账户保持活动状态的时间。
阴影口令文件不应是一般用户可以读取的。仅有少数几个程序需要存取加密口令,例如login(1)和passwd(1),这些程序常常是设置用户ID为root的程序。有了阴影口令后,普通口令文件/etc/passwd可由各用户自由读取。
在linux 2.4.22和Solaris 9中,与访问口令文件的一组函数类似,有另一组函数可用于访问阴影口令文件。
#include <shadow.h>struct spwd *getspnam( const char *name );struct spwd *getspent( void );两个函数返回值:若成功则返回指针,若出错则返回NULLvoid setspent( void );void endspent( void );
在FreeBSD 5.2.1和MAC OS X 10.3中,没有阴影口令结构。附加的账户信息放在口令文件中。
本篇博文内容摘自《UNIX环境高级编程》(第二版),仅作个人学习记录所用。关于本书的更多内容可参考:http://www.apuebook.com/。
新闻热点
疑难解答