linuxでのcat、more、lessコマンドの違いの詳細


この文書は次のとおりです.http://blog.csdn.net/xyw_blog/article/details/16861681
「Python絶技」という本の最初の小さなプログラムでは、unixシステムにおけるshadowファイルのパスワードとの暴力的な解読能力をまず示しています.これまではshadowファイルに対してユーザーのパスワードを保存した段階にとどまっていただけでしたが、詳細な研究は行われていなかったので、週末の2日間はわざわざ時間をかけてよく研究しました.1.passwdファイルとshadowファイルはunix以前に/etc/shadowというファイルがありませんでした.1人のユーザのすべての情報は/etc/passwdファイルに保存され、暗号化されたユーザパスワードはpasswdファイルの2番目のフィールドに保存されます.では、なぜshadowファイルが生成されるのでしょうか.まずlsを通じてpasswdファイルの詳細な権限を確認します:-rw-r--r-- 1 root root 1505 Mar 6 22:34 /etc/passwdはすべてのユーザーが読むことができることを見ることができて、それではユーザーのパスワードを誰にも暴露しませんか?過密化されていますが、セキュリティの問題もあります.現在のファイル権限は、(注意/usr/bin/passwd rwx権限のほかにSetUIDのs識別ビットがある)-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のみがshadowファイルを読み書きできることを保証しています(rootは天神であり、どのファイルもrootの管轄下にあることは特に説明されていません).では、一般ユーザーがパスワードを変更するときは必ずshadowファイルを変更しますよね?/usr/bin/passwdのsビットにより実現した.一般ユーザのパスワード変更プロセスは、testユーザが/usr/bin/passwdコマンドを呼び出して自分のパスワードを変更する.passwdは任意のユーザに対して実行可能であり、sビットはすべての実行可能なユーザがこのコマンドを実行する際にrootに変身することを規定しているため、testユーザはrootの権限を持ってshadowファイルを読み書きし、コマンド実行が完了すると変身が完了し、testはroot権限を失います.shadowファイルの分離により、一般ユーザーが自分のパスワードを変更することを保証するとともに、一般ユーザーが暗号化されたパスワード列が見えないことを保証し、セキュリティを向上させることがわかります.2.shadowファイルの構成root:$1$abcdefg$Qp6zr7K0tHxV79N9cCLSc1:16866:0:99999:7:::アカウント名:root暗号化後のパスワード:$1$abcdefg$Qp6zr7K0tHxV79N9cCLSc1前回パスワード変更日:16866パスワード変更不可日数:0パスワード変更が必要な日数:999999(999999は変更不要) パスワード変更前の警告:7アカウントの有効期限:アカウントなしキャンセル日:予約項目なし、現在は使用されていません 3.shadowファイルのパスワード部分shadowファイルのパスワード部分は3つの部分からなり、'$'で分割されている.上記のrootユーザのパスワードを例にとると、'$'分割後にそれぞれ暗号化方式(1)、salt値(abcdefg)、暗号化後のパスワード列(Qp6zr7K0tHxV79N9cCLSc1)である.まず最初の暗号化方式を見ると、現在の暗号化方式は6種類あり、最も一般的なのは3種類だけである:1:MD 5暗号化、暗号長22:SHA-256暗号化、暗号長43 6:SHA-512暗号化、暗号長86 4.password文字列を手動で生成する(centos 6.5でテスト)方法1:dovecotパッケージにdovecotadmコマンドを提供する.例えば、sパラメータは、SHA 512−CRYPT、SHA 256−CRYPT、MD 5−CRYPTなどの様々な暗号化方式を選択可能であるdoveadm pw -s SHA512-CRYPT.方法2:opensslパッケージにpasswdサブコマンドを提供します.例えばopenssl passwd -1ですが、md 5のみがサポートされていることに気づきました.方法3:デフォルトのpythonにcryptライブラリが付属しています.
__import__("crypt").crypt("password","$1$abcdefg$") 1

指定したsalt値を自分で設定したくない場合は、cryptライブラリのmksalt関数を使用して自動的に生成し、md 5,sha 256,sha 512の全方位的なサポートを提供します.