在 Linux 中建立使用者賬號時,設定使用者密碼是一件基本的事情。每個人都使用 passwd
命令跟上使用者名稱,比如 passwd USERNAME
來為使用者設定密碼。
確保你一定要設定一個難以猜測的密碼,這可以幫助你使系統更安全。我的意思是,密碼應該是字母、符號和數位的組合。此外,出於安全原因,我建議你至少每月更改一次密碼。
當你使用 passwd
命令時,它會要求你輸入兩次密碼來設定。這是一種設定使用者密碼的原生方法。
如果你不想兩次更新密碼,並希望以不同的方式進行更新,怎麼辦呢?當然,這可以的,有可能做到。
如果你是 Linux 管理員,你可能已經多次問過下面的問題。你可能、也可能沒有得到這些問題的答案。
無論如何,不要擔心,我們會回答你所有的問題。
passwd
命令是在 Linux 中為使用者設定、更改密碼的標準方法。以下是標準方法。
# passwd renuChanging password for user renu.New password:BAD PASSWORD: The password contains the user name in some formRetype new password:passwd: all authentication tokens updated successfully.
如果希望在一條命令中設定或更改密碼,執行以下命令。它允許使用者在一條命令中更新密碼。
# echo "new_password" | passwd --stdin thanuChanging password for user thanu.passwd: all authentication tokens updated successfully.
chpasswd
是另一個命令,允許我們為 Linux 中的使用者設定、更改密碼。如果希望在一條命令中使用 chpasswd
命令更改使用者密碼,用以下格式。
# echo "thanu:new_password" | chpasswd
如果你要為 Linux 中的多個使用者設定、更改密碼,並且使用不同的密碼,使用以下指令碼。
為此,首先我們需要使用以下命令獲取使用者列表。下面的命令將列出擁有 /home
目錄的使用者,並將輸出重定向到 user-list.txt
檔案。
# cat /etc/passwd | grep "/home" | cut -d":" -f1 > user-list.txt
使用 cat
命令列出使用者。如果你不想重置特定使用者的密碼,那麼從列表中移除該使用者。
# cat user-list.txtcentosmagidaygeekthanurenu
建立以下 shell 小指令碼來實現此目的。
# vi password-update.sh#!/bin/shfor user in `more user-list.txt`doecho "[email protected]" | passwd --stdin "$user"chage -d 0 $userdone
給 password-update.sh
檔案設定可執行許可權。
# chmod +x password-update.sh
最後執行指令碼來實現這一目標。
# ./password-up.shmagiChanging password for user magi.passwd: all authentication tokens updated successfully.daygeekChanging password for user daygeek.passwd: all authentication tokens updated successfully.thanuChanging password for user thanu.passwd: all authentication tokens updated successfully.renuChanging password for user renu.passwd: all authentication tokens updated successfully.
如果要在 Linux 中為多個使用者設定、更改相同的密碼,使用以下指令碼。
# vi password-update.sh#!/bin/shfor user in `more user-list.txt`doecho "new_password" | passwd --stdin "$user"chage -d 0 $userdone
如果希望更改多個伺服器中的使用者密碼,使用以下指令碼。在本例中,我們將更改 renu
使用者的密碼,確保你必須提供你希望更新密碼的使用者名稱而不是我們的使用者名稱。
確保你必須將伺服器列表儲存在 server-list.txt
檔案中,每個伺服器應該在單獨一行中。
# vi password-update.sh#!/bin/bashfor server in `cat server-list.txt`dossh [email protected]$server 'passwd --stdin renu <<EOFnew_passwdnew_passwdEOF';done
你將得到與我們類似的輸出。
# ./password-update.shNew password: BAD PASSWORD: it is based on a dictionary wordBAD PASSWORD: is too simpleRetype new password: Changing password for user renu.passwd: all authentication tokens updated successfully.New password: BAD PASSWORD: it is based on a dictionary wordBAD PASSWORD: is too simpleRetype new password: Changing password for user renu.passwd: all authentication tokens updated successfully.
pssh
是一個在多個主機上並行執行 ssh 連線的程式。它提供了一些特性,例如向所有進程傳送輸入,向 ssh 傳遞密碼,將輸出儲存到檔案以及超時處理。導航到以下連結以瞭解關於 PSSH 命令的更多資訊。
# pssh -i -h /tmp/server-list.txt "printf '%s\n' new_pass new_pass | passwd --stdin root"
你將獲得與我們類似的輸出。
[1] 07:58:07 [SUCCESS] CentOS.2daygeek.comChanging password for user root.passwd: all authentication tokens updated successfully.Stderr: New password: BAD PASSWORD: it is based on a dictionary wordBAD PASSWORD: is too simpleRetype new password:[2] 07:58:07 [SUCCESS] ArchLinux.2daygeek.comChanging password for user root.passwd: all authentication tokens updated successfully.Stderr: New password: BAD PASSWORD: it is based on a dictionary wordBAD PASSWORD: is too simple
或者,我們可以使用 chpasswd
命令更新多個伺服器中的使用者密碼。
# ./password-update.sh#!/bin/bashfor server in `cat server-list.txt`dossh [email protected]$server 'echo "magi:new_password" | chpasswd'done
為此,首先建立一個檔案,以下面的格式更新使用者名稱和密碼。在本例中,我建立了一個名為 user-list.txt
的檔案。
參考下面的詳細資訊。
# cat user-list.txtmagi:new@123daygeek:new@123thanu:new@123renu:new@123
建立下面的 shell 小指令碼來實現這一點。
# vi password-update.sh#!/bin/bashfor users in `cat user-list.txt`doecho $users | chpasswddone