shadowファイルのlinux
「Pythonのスタント」でこの本は、最初の小さなプログラムは、最初の理由は、ユーザーパスワードの段階を保存するためにshadowファイル内だけで滞在する前に、暴力やUNIXファイルシステムのシャドウパスワードクラックのための能力を実証しているが、細部ませんでした研究、良い週末は特別に少し勉強する時間を取るようにします。
1.passwdファイルとshadowファイル
このドキュメントのUNIXの/ etc / shadowのではありません。ユーザーのみに/ etc / passwdファイル保存されているすべての情報は、利用者は、第2フィールドのpasswdファイルにパスワードが暗号化されました。なぜ農産物shadowファイルそれ?
まず、私たちはLS passwdファイルで詳細なアクセス権を見て: -rw-r--r-- 1 root root 1505 Mar 6 22:34 /etc/passwd
私たちは、各ユーザーが読み取り可能である見ることができる、それはまだ誰にも開示されたユーザーのパスワードを入れていないのですか?増加が近すぎですが、だけでなく、セキュリティ上の問題があること。
今、この:(また注意の/ usr /ビン/ passwdの国旗のsetuidのrwxの許可がある)のようなファイルのパーミッションは、 -rwsr-xr-x. 1 root root 30768 Feb 22 2012 /usr/bin/passwd
---------- 1 root root 964 Mar 6 22:34 /etc/shadow
最初のshadowファイルに対するすべての権利を除去することで、rootだけが影に読み取りと書き込みのファイルができていることを確認し(ルートは神である、特別な書類の記載は)ルートの管轄下にありません。平均的なユーザーは確かに変更を加える必要がありますので、ああ、右シャドウパスワードファイルが変更されましたか?ことでは/ usr / binに/ passwdのsビットの実装。
:パスワードのプロセスを変更するには、普通のユーザーはこれです
すべてのユーザーが、このコマンドを実行する必要が実行可能なすべてのユーザーのために実行可能passwdにあるため、テストユーザーは、パスワードを変更するには、/ usr / bin / passwdコマンドを呼び出し、-ビットS変容コマンドの終了が完了したときにルートに変換するので、shadowファイルを読み書きするために、テストユーザーがroot権限を取り、この場合には、テストでは、失われたroot権限になります。それは自分のパスワードを変更するために、通常のユーザーを確保するために、だけでなく、平均的なユーザーは、セキュリティを強化するために暗号化されたパスワード文字列を見ることができないことを保証するために、両方の、shadowファイルの分離を通して見ることができます。
なる2.shadowファイル root:$1$abcdefg$Qp6zr7K0tHxV79N9cCLSc1:16866:0:99999:7:::
のアカウント名:ルート
パスワードが暗号化:$1$abcdefg$Qp6zr7K0tHxV79N9cCLSc1
最後のパスワードを変更:16866
パスワードが数日間に変更することはできません:0
99999(99999は、その変化がないことを示していない):日数パスワードを再度変更する必要がある
パスワードの変更前数日前に警告:7
アカウントの有効期限:なし
口座解約日:なし
エントリが存在無用で、残っていない
一部の3.shadowファイルのパスワード
shadowファイルのパスワード部分はによって、3つの部分から構成'$'
部門。
上記ではroot
、ユーザのパスワード、例えば、に係る'$'
暗号化方式(1)に分割され、ソルト値(abcdefg
)、暗号化されたパスワード文字列は(ありますQp6zr7K0tHxV79N9cCLSc1
)。
まず、第一の暗号化方式を見て、暗号化の6種類、最も一般的な3つだけが存在する
。1:MD5暗号化は、22の暗号文は、
5:SHA-256暗号化、暗号文43は、
6:SHA-512暗号化、秘密テキスト86の長さ
(centos6.5でテスト)4.手動で生成されたパスワード文字列
dovecotのパッケージ提供dovecotadmコマンド:方法a。
例えば:doveadm pw -s SHA512-CRYPT
前記Sは、SHA512-CRYPT、SHA256-CRYPT、オプションとして、複数の暗号化モードである MD5-CRYPT。
方法2:OpenSSLパッケージは、passwdのサブコマンドを提供しました。
そのようなものとしてopenssl passwd -1
、しかし、私は唯一のMD5をサポートしていました。
方法3:デフォルトのpythonは、暗号ライブラリを付属しています。
__import__("crypt").crypt("password","$1$abcdefg$")
- 1
あなたは、自分の指定されたsalt値を設定したくない場合は、自動的にmksalt暗号ライブラリ関数を使用して生成し、MD5、SHA256、SHA512ラウンドのサポートを提供することができます。