21

ドキュメントでは github のを参照していますが、これは少しまばらで不可解です。

それはこう言います:

# created with:
# crypt.crypt('This is my Password', '$1$SomeSalt')
password: $1$SomeSalt$UqddPX3r4kH3UL5jq5/ZI.

しかしcrypt.crypt、例が示すものを発行しません。また、MD5 を使用します。

私はこれを試しました:

# python
import crypt
crypt.crypt('This is my Password', '$6$somereallyniceandbigrandomsalt$')
>> '$69LxCegsnIwI'

ただし、ユーザーのパスワード フィールドは次のようになります。

password: $6$somereallyniceandbigrandomsalt$UqddPX3r4kH3UL5jq5/ZI.

これには、 (SHA-512 ハッシュであることを示す)、salt、および暗号化されたパスワードを区切る 3 つの$区切り文字が含まれます。6

python crypt のドキュメントでは、 $N形式については何も言及されていないことに注意してください。

質問:

  1. に提供されるソルトはcrypt.crypt、末尾の$で終わるはずですか、それとも$N$SALT形式ですか?

  2. Python のドキュメントでは DES について言及されていますが、SHA-512 または MD5 はどのように呼び出されているのでしょうか。また、これに関するドキュメントはどこにありますか?

  3. 私は本当に $N$SALT$CRYPTED の出力を取りcrypt.crypt、最初の$6を切り捨てて$N$SALT$CRYPTEDを作るべきですか? これはansibleが必要とするものですか?

4

8 に答える 8

6

これはAnsible docsで更新されました。推奨される方法は 2 つあります。

ユーザー モジュールの暗号化されたパスワードを生成するにはどうすればよいですか?

ほとんどの Linux システムで利用できる mkpasswd ユーティリティは、優れたオプションです。

mkpasswd --method=SHA-512このユーティリティがシステムにインストールされていない場合 (OS X を使用している場合など) は、Python を使用してこれらのパスワードを簡単に生成できます。まず、Passlib パスワード ハッシュ ライブラリがインストールされていることを確認します。

pip install passlib

ライブラリの準備ができたら、SHA512 パスワード値を次のように生成できます。

python -c "from passlib.hash import sha512_crypt; import getpass; print sha512_crypt.encrypt(getpass.getpass())"

于 2015-08-04T01:43:58.883 に答える
4

これは私にとってはうまくいきました(python 2.7.4を使用):

python
>>> import crypt
>>> crypt.crypt('thisismypassword', '$6$Som3S@lt$')
'$6$Som3S@lt$XGoe9ONI00NaTkYn46CLDr8TSkvkovahinFqy95vrSe5Hzx2999C9mgF76ODFRnXMJHUCWFHLdkYd3c7AB9WV.'

次のような vars.yml があります。

---
password: $6$Som3S@lt$XGoe9ONI00NaTkYn46CLDr8TSkvkovahinFqy95vrSe5Hzx2999C9mgF76ODFRnXMJHUCWFHLdkYd3c7AB9WV.

そして、次のような playbook.yml :

---
- hosts: vagrant
  vars_files:
    - vars.yml
  user: vagrant

  tasks:
  - name: create artefactual user
    user: name=artefactual state=present password={{password}} shell=/bin/bash

vagrant を使用して Playbookを実行するvagrant upと、別のコンソールから、ansible によって作成された artefactual ユーザーとパスワード を使用して、新しく作成された vm に ssh できますthisismypassword

crypt.crypt の出力を password という ansible 変数にコピーして、それを使用しました。質問に表示されている crypt の出力が短すぎるように見えますが、なぜそうなったのかわかりません。おそらく Python のバージョンが異なるのでしょうか?

于 2013-07-31T19:27:22.033 に答える
3

暗号化されたパスワードの生成を処理する機能を持つ jinja2 フィルターを使用できます。提供されたパスワードで linux ユーザーを作成する実際の例を次に示します。

- name: Creating Linux User
  user:
    name: "{{ myuser }}" 
    password: "{{ mypassword | password_hash('sha512') }}"

これがあなたや他の人に役立つことを願っています。

于 2015-05-26T00:59:04.200 に答える
1

次のシェルコマンドを使用してパスワードを設定しています。

- name: "Set user password: someuser"
  command: 'echo "somepassword"| passwd --stdin "someuser"'
  sudo: yes
于 2014-08-15T18:55:12.790 に答える
0

このようにしてみてください

vars_prompt:
 - name: "user_password"    
   prompt: "Enter a password for the user"    
   private: yes    
   encrypt: "md5_crypt" #need to have python-passlib installed in local machine before we can use it    
   confirm: yes    
   salt_size: 7

 - name: "add new user" user: name="{{user_name}}" comment="{{description_user}}" password="{{user_password}}" home="{{home_dir}}" shell="/bin/bash"
于 2014-04-09T15:14:11.500 に答える