useradd や chef の user resource で password を設定するときに必要になる、
/etc/shadow の hash を生成する方法です。
/etc/shadow については、
- ひつまぶし食べたい: /etc/shadowについて勉強してみた
- http://techs-empty.tumblr.com/post/14348640038/chef-etc-shadow-ruby
などのページを読むと理解が深まると思います。
hash 生成方法
perl, php, python での生成方法は以下のとおりです。
perl
perl -E 'say crypt("PASSWORD", "\$6\$". crypt(rand, rand 100))'
php
php -r 'echo crypt("PASSWORD","$6$".sha1(uniqid(mt_rand(),true)));'
python
python -c 'import crypt, random, hashlib; random.seed(); print crypt.crypt("PASSWORD", "$6$" + hashlib.sha1(str(random.random())).hexdigest())';
注意点
salt のランダム値の生成が雑で、セキュアではないかもしれません(特に perl)。
また、perl と python の方法は、Mac OSX 上で実行しても正しい結果が得られませんので Linux 上で実行してください。
これは、Mac OSX の crypt は sha512 に対応していないためのようです。
したがって、sha512 に対応したモジュールを入れれば Mac OSX でも生成できます。
perl, python それぞれの生成方法は以下のページが参考になります。