以前は/etc/passwd に直接パスワードが書かれていたが、現在は/etc/shadowに格納するシャドウパスワード方式になった。
ファイル属性は/etc/shadowはrootしか読み書きできないようになっている。
pi@raspberrypi:~$ ls -l /etc/shadow -rw-r----- 1 root shadow 921 11月 21 17:05 /etc/shadow pi@raspberrypi:~$ ls -l /etc/passwd -rw-r--r-- 1 root root 1665 11月 21 17:05 /etc/passwd
実際に/etc/shadowに書かれているパスワードを確認。
中身はハッシュ値が格納されている。
pi@raspberrypi:~$ sudo cat /etc/shadow | grep pi pi:$5$clhzvEqPUI$X2QJCtWBs22x0hfMq3WEcuALgRth13MmLE9m2Emt6V9:19257:0:99999:7:::
格納されている形式は
$id$salt$encrypted
暗号化はcrypt関数を使用している。
前半の clhzvEqPUI が slat になっていて、同じパスワードをセットしても値が変わるのはここが原因。
上記の id が 5 になっているのは SHA-256 を使用していることを示す。
encrypted は SHA-256 では 43文字固定で出力される。
perl でワンライナーで書くとこんな感じ
perl -e 'print crypt("raspberry", "\$5\$clhzvEqPUI"), "\n";'
実行させると
pi@raspberrypi:~$ perl -e 'print crypt("raspberry", "\$5\$clhzvEqPUI"), "\n";' $5$clhzvEqPUI$X2QJCtWBs22x0hfMq3WEcuALgRth13MmLE9m2Emt6V9 pi@raspberrypi:~$
と無事に同じ出力を確認することができる。