linux下批量修改使用者密碼 對系統定期修改密碼是一個很重要的安全常識,通常,我們修改使用者密碼都使用 passwd user 這樣的命令來修改密碼,但是這樣會進入互動模式,即使使用指令碼也不能很方便的批量修改,除非使用expect 這樣的軟體來實現,難道修改一下密碼還需要單獨安裝一個軟體包嗎? 不,我們其實還有其他很多方法可以讓我們避開互動的,下面具體寫一下具體的實現方式:第一種:echo "123456" | passwd --stdin root優點:方便快捷缺點:如果你輸入的指令能被別人通過history或者其他方式捕獲,那麼這樣的方式是很不安全的,更重要的是如果密碼同時含有單引號和雙引號,那麼則無法通過這種方法修改。說明:批量修改linux密碼 passwd --stdin user 從標準輸入中讀取密碼,所以使用者可以在指令碼中使用如 echo NewPasswd | passwd --stdin username 這種方式來批量更改密碼 但在其它的一些發行版(如Debian/Suse)所提供的passwd並不支援--stdin這個參數 第二種:a. 首先將使用者名稱密碼一起寫入一個臨時檔案.cat chpass.txtroot:123456zhaohang:123456b. 使用如下命令對使用者口令進行修改:chpasswd < chpass.txtc. 可以使用 123456 來登入系統,密碼修改完畢.優點:可以很快速方便的修改多個使用者密碼缺點:純文字密碼寫在檔案裡仍然顯得不夠安全,但是避免了第一種修改方式不能有特殊字元串密碼的情況.第三種:a. 用 openssl passwd -1 來產生使用者口令,連同使用者名稱一起寫入檔案.cat chpass.txtroot:$1$ri2hceVU$WIf.firUBn97JKswK9ExO0zhaohang:$1$i/Gou7.v$Bh2K6sXmxV6/UCxJz8N7b.b. 使用如下命令對使用者口令進行修改:chpasswd -e < chpass.txtc. 可以使用 123456 來登入系統,密碼修改完畢.優點:可以很快速方便的修改多個使用者密碼缺點:和上面兩種相比大大增強了安全性附加介紹:openssl passwd -1 命令可以輸出shadow裡面的密碼,把這個命令產生的秘串更改為你shadow裡的密碼,那麼下次你登入系統就可以用你的產生密碼的口令來登入了,使用這個命令,即使口令一樣,多次執行產生的密碼串也不一樣。那個hash值對應的密碼是完全隨機的基於64位字元編碼的28位長,因此要破解它是非常困難的,只要不用那些密碼已經公布出來的hash值建立帳號,即使這些密碼檔案被公布也還是比較安全的。使用舊的unix雜湊可以去掉 -1 參數。[root@WEB01 ~]# openssl passwd -1Password: 123456Verifying - Password: 123456$1$ri2hceVU$WIf.firUBn97JKswK9ExO0 也可以直接使用如下命令來直接產生:[root@WEB01 ~]# openssl passwd -1 123456[root@WEB01 ~]# openssl passwd -1 -salt "yoctor" 123456 上面命令中的 salt 自己隨便輸入些東西因為設定密碼的時候密碼密文是MD5加密的,在產生雜湊值的時候系統回在密文中加如鹽從而使密文無法反向破譯。passwd加密的時候系統加的salt是 時間