Linuxシステムでの/ etc / shadowのパスワード形式

-例:

grep -n root /etc/shadow

**root:$6$O2PgbgtuMWeM4tA.$4tEpVBS7yozpRUONzM8ERndYAx2R.0hTmJhX6XM0H9qc8PON4WRkQ1t/kt//KYPnJpmvvkOsbIMSLjWANL563/:18642:0:99999:7:::**

18642フィールドには、パスワードが変更された日付が記録されますが、日付の形式ではなく、「タイムスタンプ」の形式で表示されます。Linuxの日付と時刻は、1970年1月1日の累積日付です。 1971年1月1日は366でした。対応する18462は2021年1月15日です。次のコマンドを使用して、日付に対応するタイムスタンプを表示できます。

echo $(($(date --date="2021/01/15" +%s)/86400+1))

2021/01/15はタイムスタンプを計算する日付、86400は毎日の秒数、%sは1970/01/01以降の累積合計秒数です。/ etc / passwdでrootをチェックすると、ログインシェルが/ bin / bashであることがわかります。ここで、bashは整数のみをサポートしているため、1970/01/01の日を完了するには1を追加する必要があります。

  • Linuxの時代が1970/01/01に始まるのはなぜですか?

当初、コンピュータのオペレーティングシステムは32ビットでしたが、時間も32ビットで表されていました。
整数はJAVAでは32ビットで表されるため、32ビットで表すことができる最大値は2147483647です。さらに、1年の365日間の合計秒数は、31536000、2147483647 / 31536000 = 68.1です。

つまり、32ビットで表現できる最長時間は68年ですが、実際には2038年1月19日の03:14:07までに最大時間になります。この時点以降、32ビットすべてが-ビットオペレーティングシステム時間は1000000000000000000000000000000000になります

つまり、1901年12月13日の20:45:52に時間回帰の現象が発生し、多くのソフトウェアが異常に実行されます。

32ビットで時間を表す最大間隔は68年であり、最も初期のUNIXオペレーティングシステムは、コンピューターの使用年数とアプリケーションの制限時間を考慮し、1970年1月1日をエポック時間(開始時間)として採用したためです。 UNIX TIMEの。、そしてJavaは当然この制約に従います。

タイムリターンの現象については、12月4日15時30分08秒まで64ビットオペレーティングシステムを表現できるので、64ビットオペレーティングシステムの登場で徐々に解消されると思います。私たちのN世代の子孫は地球を破壊することさえありますこの時間は数千億年先なので、その日はそれについて十分に心配する必要はありません。

おすすめ

転載: blog.csdn.net/qq_39599464/article/details/114402957