加密口令是經單向加密算法處理過的用戶口令副本。因為此算法是單向的,所以不能從加密口令猜測到原來的口令。
歷史上使用的算法總是從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/。
新聞熱點
疑難解答