您現在的位置是:首頁 > 手機遊戲首頁手機遊戲

透過echo "password" |passwd --stdin user命令改密碼引發的問題

簡介設定密碼最好不要使用echo “password” |passwd ——stdin user 這條命令,一是不安全,透過history可以看到密碼,二是不確定因素太多,設定密碼容易出錯,具體echo的用法可以上網搜尋檢視

貓改密碼之後需要重啟嗎

出於安全考慮,公司要求對阿里雲上的部分伺服器修改root密碼,其中伺服器中有一臺Centos和若干臺ubuntu。在我很慎重地更改了密碼之後,沒想到還是出了問題,有一臺伺服器ssh登入不上去了。

當時考慮到有兩個可能:

1。有可能是ssh配置檔案沒有開啟,PermitRootLogin yes(剛剛升級過ssh,這個原因也是可能的)

2。密碼錯誤

往回梳理,發現這臺伺服器是Centos的,並且是用複製貼上echo “LN3T!854qq” |passwd ——stdin root 這條命令來更改的密碼,理應不可能出錯的。所以懷疑是ssh的問題,透過阿里雲終端登入伺服器來驗證,發現仍然不能登入伺服器,所以應該不是ssh的問題。

回到密碼本身,考慮會不會是這條命令出了問題。找到另一臺Centos伺服器來測試這條命令,問題就出現了,發現這條根本不能執行成功。

然而,這裡無法執行成功,可是之前明明是執行成功了的,這是矛盾的。把“!”換成“#”再執行一遍命令,密碼就更改成功了,所以,問題就是出在了密碼中有“!”。繼續測試echo命令和“!”,知道了“!”在echo中是有不同意義的,如果要輸出“!”,就需要“\”來轉譯。

透過echo "password" |passwd --stdin user命令改密碼引發的問題

最後,實在沒辦法,只能透過阿里雲終端重置密碼,然後獲得允許重啟了伺服器,最終才登入了伺服器。透過history命令檢視操作歷史紀錄,看到echo “LN3T!854qq” |passwd ——stdin root這條命令確實執行成功了,並且把密碼更改了,應該是出現了bug。

問題最終找到了,也解決了。透過這件事,也有一些收穫:

1。設定密碼最好不要使用echo “password” |passwd ——stdin user 這條命令,一是不安全,透過history可以看到密碼,二是不確定因素太多,設定密碼容易出錯,具體echo的用法可以上網搜尋檢視;

2。一臺伺服器至少應該設定兩個使用者,一個是root,另外一個是擁有root許可權的普通使用者(透過配置/etc/sudoers可以實現),這樣就能夠保證一個密碼出錯後還可以透過另外一個使用者登入伺服器重置密碼,;

3。透過passwd user 命令更改密碼,密碼中出現的符號不包含其他意義,僅僅是作為符號本身來使用,這種方法設定密碼更安全。

Top