passwd文件是以行为单位的配置文件,每行定义系统上的一个用户,行内分为字段,字段之间由一个冒号隔开。这些字段依次为:
用户名 | 密码 | 用户ID | 组ID | 用户全名 | 主目录 | 登录shell |
密码:在旧的UNIX系统上,这个字段含有用户的加密密码,为了安全性,现在的linux均显示为 x 或 * 号。
用户全名:安装linux时如果不输入全名,则显示为跟用户名一样,如果输入,则显示为全名(不可用于登录)
shadow文件
用户名:加密密码:上次更改密码的时间:最小更改密码间隔:密码有效期限:密码过期提示时间:密码锁定期:账户有效期:保留字段
通过perl生成linux系统用户保存在shadow中的密码:
perl -e 'print crypt("12345678",q($1$iLDiYNCq)),"\n"'
\\其中12345678为要给用户设置的密码,
$1$iLDiYNCq字符串是自定义字符串,shadow里一般用$1$后面跟8个字符这种格式。
生成的密码串样式如下:
$1$iLDiYNCq$0napSn3Qck9Sj4FqP5RFz0
中间有个$,前面算salt,这个salt是随机写入的,跟后面的加密值,合在一起叫hash
"$1$" stands for MD5, 后面只能跟8个字符
"$2a$" is Blowfish,
"$5$" is SHA-256
"$6$" is SHA-512,
crypt 本身默认用des算法
如果salt以$1$开头就使用md5算法
des算法命令如下:
perl -e 'print crypt("12345678","/g"),"\n"'
生成的密码串样式如下:
/gSr78Mzt1eYI
可以通过查看libcrypt[._*]链接到/usr/lib下的哪些库文件来得知系统密码所使用的加密算法。
如果链接到libcrypt*库,那么使用的为MD5;
如果为libdescrypt*,就应该为DES了。
具体操作如下:
#cd /usr/lib
#ls -l libcrypt[._]*