系统数据文件和信息之阴影口令

加密口令是经单向加密算法处理过的用户口令副本。因为此算法是单向的,所以不能从加密口令猜测到原来的口令。

历史上使用的算法总是从64字符集中产生13个可打印字符。某些较新的系统使用MD5算法对口令加密,为每个加密口令产生31个字符。

给出一个加密口令,找不到一种算法可以将其逆转到普通文本口令(普通文本口令是在Password:提示符后键入的口令)。但是可以对口令进行猜测,将猜测的口令经单向算法变换成加密形式,然后将其与用户的加密口令相比较。

为使企图这样做的人难以获得原始资料(加密口令),现在,某些系统将加密口令存放在另一个通常称为阴影口令(shadow password)的文件中。该文件至少要包含用户名和加密口令。与该口令相关的其他信息也可存放在该文件中(表6-2)。

20131005212931578

只有用户登录名和加密口令这两个字段是必需的。其他字段用于控制口令的改动频率(称为口令的衰老)以及账户保持活动状态的时间。

阴影口令文件不应是一般用户可以读取的。仅有少数几个程序需要存取加密口令,例如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 );
两个函数返回值:若成功则返回指针,若出错则返回NULL

void setspent( void );
void endspent( void );

在FreeBSD 5.2.1和MAC OS X 10.3中,没有阴影口令结构。附加的账户信息放在口令文件中。

本篇博文内容摘自《UNIX环境高级编程》(第二版),仅作个人学习记录所用。关于本书的更多内容可参考:http://www.apuebook.com/

原文地址:https://www.cnblogs.com/nufangrensheng/p/3506830.html