Linux 账户密码策略

  1. 加密算法
  2. salt
  3. 密文安全性
  4. 参考文档

在现在的linux和unix系统中,用户的密码都保存在shadow文件中,因为密码关系到系统的安全,所以只有root用户才有读shadow文件的权限。
/etc/passwd

➜ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
zongbao:x:1000:1000:fengzongbao,,,:/home/zongbao:/bin/zsh

shadow中存放的内容是有着一定的格式的,如下:
/etc/shadow

➜ sudo cat /etc/shadow
root:!:16398:0:99999:7:::
daemon:*:16273:0:99999:7:::
bin:*:16273:0:99999:7:::
sys:*:16273:0:99999:7:::
sync:*:16273:0:99999:7:::
zongbao:$6$NOOoCLdzq4JKnxF.$Cdz0/CbZQRjVJ1vfxMJBlloK1wVEa/czY/63WLBqKWFGjtHk2TPfhveu.ErfDF1gV2YahACNQ/UgEwVOT4qkC/:16569:0:99999:7:::

用冒号分割后的具体意义如下:

其中,密码hash列,用$符号隔开了几个部分,依次表示:

加密算法

数字和所使用的加密算法对应关系:
1: MD5 ,(22位)
2a: Blowfish, 只在有一部分linux分支中使用的加密方法
5: SHA-256 (43位)
6: SHA-512 (86位)
目前常用的是当id为1时,使用md5加密,id为5,采用SHA256进行加密,id为6采用SHA512进行加密。

salt

[The] salt is a two-character string chosen from the set [a-zA-Z0-9./]. This string is used to perturb the algorithm in one of 4096 different ways.

密文安全性

要用到SHA256或者SHA512的密码加密,glic版本需大于2.7。
底层用到的

这样的密码还安全吗?答案不是绝对的,如果有不怀好意的人拿到了比如说上面的hash还是可以用字典暴力破解。

参考文档

http://man7.org/linux/man-pages/man3/crypt.3.html

script>