問題概述及解決
問題描述
Centos 7 系統 優化系統內核后,賬戶無法登錄(輸入的賬號和密碼均正確,絕對沒有錯誤!!,也沒有禁止登錄!!)。 報錯為:Permission denied。
優化內核內容為:
cat /etc/security/limits.conf * soft nofile 10000000 #錯的,千萬別用 * hard nofile 10000000 #錯的,千萬別用 * hard nproc 10000000 #錯的,千萬別用 * soft nproc 10000000 #錯的,千萬別用
報錯截圖:
出現上述問題,是因為在優化內核參數時多輸入了一個0。
問題解決
進單用戶模式將/etc/security/limits.conf 中的參數改為系統可承受的值,經過多次測驗,最大可允許的數值為1000009。
問題發現及排查
問題發現
公司視頻項目在建設開始,對Centos系統部署完成,並進行系統內核調優,重啟系統后,發現賬戶無法登錄。確定輸入的密碼肯定正確,但是報錯Permission denied。
問題排查
第一次嘗試
進入單用戶模式,修改賬戶密碼。
在啟動頁面,按鍵 ‘e' 進入編輯
按向下移動光標,跳轉到最后,找到’ro‘ 修改為 'rw init=/sysroot/bin/sh' 【注意,輸入時沒有引號】
如下圖
按Ctrl-x 進行重啟進入單用戶模式
輸入執行 chroot /sysroot
執行passwd root 修改密碼【此處截圖,中文顯示異常,請忽略】
執行touch /.autorelabel
如果不執行,密碼不會生效。
按Ctrl+D,執行reboot重啟生效。
輸入賬戶密碼,依舊失敗 ,報錯依舊為 Permission denied。
至此第一次嘗試失敗
第二次嘗試
依舊進入單用戶模式,具體過程不重復描述;進入系統,查看/var/log/secure
如上圖,報錯內容中有一條很明顯:Could not set limit for 'nofile' Operation not permitted 【我英語很爛,就不妄加翻譯了】。
通過以上報錯,我們定位到問題出在/etc/security/limits.conf 中配置的 nofile打開數限制值太大。
cat /etc/security/limits.conf * soft nofile 10000000 #錯的,千萬別用 * hard nofile 10000000 #錯的,千萬別用 * hard nproc 10000000 #錯的,千萬別用 * soft nproc 10000000 #錯的,千萬別用
於是對上述配置進行修改【去掉一個0】
cat /etc/security/limits.conf * soft nofile 1000000 * hard nofile 1000000 * hard nproc 10000000 * soft nproc 1000000
按Ctrl+D,執行reboot重啟生效。
輸入賬戶密碼,成功登錄。
至此,問題成功定位並解決。
總結
回看問題排查的過程,我們走了一些彎路。其實我們在嘗試排錯的時候,應該首先想到去查看日志,看一下具體報錯內容。
補充
1、如果是賬戶密碼錯誤 報錯信息其實是 Login incorrect
2、在寫下這篇總結的時候,我特意嘗試去查詢 nofile 能夠設置的最大值究竟是多少,但是並沒有查到結果。於是我嘗試去測試這個值最大限度。經過多次嘗試 發現 該值最大能設置為1000009,我推測nproc最大應該也是1000009。對此,我這種半路出家的門外漢真的是不清楚,如果有大佬了解這其中的緣由,還請能夠在評論區給予解答。在此,非常感謝!