Shell Script 修改系統帳號密碼

在 Linux 要修改帳號密碼, 可以用 passwd 完成。passwd 需要從 stdin 輸入新密碼, 但很多情況需要用非互動的方式修改, 即一行指令修改密碼。例如用 Shell Script 建立新帳號後, 立即修改新用戶的密碼。

以下會示範不用從 stdin 輸入新密碼的情況下, 用一行指令修改帳號密碼的方法。

版本較新的 Linux 的 passwd 指令, 支援 --stdin 參數, 即不會要求輸入兩次新密碼作為確認, 這樣只要用 echo 指令將新密碼, 透過管線 (即 "|" 字元) 傳送給 passwd 指令即可, 例如:


以上指令會修改帳號 newuser 的密碼, 改成 new_password


但在一些較舊的系統, 當輸入 passwd 指令修改密碼時後, 系統會彈出輸入兩次新密碼的提示, 兩次輸入的新密碼用 "Enter" 分隔。這時可以用 echo 加上 -e 參數, 模擬 "Enter" 鍵, 再用管線傳送給 passwd 指令, 例如:


以上指令同樣會會修改帳號 newuser 的密碼, 改成 new_password

另一個方法是使用 chpasswd 指令, chpasswd 可以透過讀取預先建立的帳號密碼文字檔, 實現大量修改帳號密碼, 但同樣可以過管線修改個別帳號密碼, 指令語法是:


Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.