使用 htpasswd 创建和管理身份验证文件
htpasswd 命令可以创建一个文件,这个文件中包含了用户和密码,其中密码可以是明文,也可以是经过加密的。这文件可以用来做认证文件,因为这个文件包含了用户名和密码的信息。通过用户名和密码就可以判断用户名和密码是否匹配。
htpasswd 的简单的说明
Usage:
htpasswd [-cimBdpsDv] [-C cost] passwordfile username
htpasswd -b[cmBdpsDv] [-C cost] passwordfile username password
htpasswd -n[imBdps] [-C cost] username
htpasswd -nb[mBdps] [-C cost] username password
-c 创建一个新的文件.
-n 不更新文件,仅仅输出结果。
-b 通过命令直接给出密码,而不是通过交互式的提示
-i 通过输入来验证密码
-m 默认 md5 加密
-B 使用 bcrypt 加密密码,安全性高
-d 使用 CRYPT 加密,最多8个字符,不是很安全.
-s 使用SHA 对密码加密,不是很安全.
-p 使用明文存储密码,不是很安全.
-D 删除指定的用户.
-v 对指定用户尽心密码验证.
先运行htpasswd一下看看发生了什么
# 创建一个空的密码文件
touch pwfile.txt
# 创建两个用户 用户名分别是 vspok, vpsok2 密码都是 123456
htpasswd -b pwfile.txt vpsok 123456
htpasswd -b pwfile.txt vpsok2 123456
查看密码文件的内容
cat pwfile.txt
vpsok:$apr1$TKvXOJkn$b1IVHsxR1EeCMdgj3i0HZ/
vpsok2:$apr1$D.JQJSz/$AOIoWHWVTCdqvJCYux6oV1
关于密码文件的简单的说明,上面两个用户密码是相同的为什么,加密后密码不同呢?
密码加密后的字符串 $apr1$TKvXOJkn$b1IVHsxR1EeCMdgj3i0HZ/ 用 $ 分割成三部分看
- apr1 表示使用 md5 算法
- TKvXOJkn 随机生成的 salt
- b1IVHsxR1EeCMdgj3i0HZ/ 表示加密后的密文
验证测试
htpasswd -v pwfile.txt vpsok
Enter password:
输入密码,如果密码正确就表示通过验证