根目錄被賦予777 -R權限後的處理過程

解決某研發手殘導致的系統宕機問題的處理過程


背景

2022.8.8 公司一臺服務器出現了宕機的現象:
所有的人都無法遠程, 都提示密碼錯誤.
但是網絡還是通的. 

2022.8.12 出差前一天去了一趟機房現場
發現使用鍵鼠登錄也提示密碼錯誤
認爲很詭異, 一度跟維護同事產生衝突, 認爲他們修改密碼未告知. 

使用rd.break的方式強改密碼依舊無法登錄.
最終使用一個非root用戶執行登錄發現可以, 但是想su 到root時提示錯誤
繼而發現 根 目錄都被賦予了 777 權限, 導致系統自保護無法登錄.

解決過程-密碼問題

rd.break的處理:
最開始是使用rd.break的方式去修改密碼密碼. 處理方式比較簡單. 

開機進入linux系統前的選擇操作系統的界面.
點擊e 進行編輯

在linux16開頭的一行的末尾輸入 rd.break. 並且使用ctrl+x進行啓動.
進入系統後輸入

mount -o remount,rw /sysroot/ 
然後執行
chroot /sysroot/ 
執行命令就可以修改密碼
password root 

如果要是開啓了selinux 還需要執行如下命令
touch /.autorelabel 

解決過程--無法登錄的問題

上一步僅是記錄. 其實改了密碼還是不可以登錄. 
發現文件權限有問題後, 想到一個比較簡單的解決辦法. 跟改密碼的方法一樣.
只不過在passwd root 這一步修改爲
cd /etc
chmod 644 passwd group shadow
chmod 400 gshadow
cd ssh
chmod 600 moduli ssh_host_dsa_key ssh_host_key ssh_host_rsa_key
chmod 644 ssh_config ssh_host_dsa_key.pub ssh_host_key.pub ssh_host_rsa_key.pub
chmod 640 sshd_config
chmod 700 /var/empty/sshd

注意不同目錄需要的權限不一樣, 比如 密碼等信息 可能必須用戶有讀權限, 但是非屬主必須沒有寫權限

解決過程--解決文件權限問題

經過如上操作,重啓後用戶可以登錄了. 不再提示密碼錯誤
但是因爲僅僅修改了幾個文件權限, 比如像是su sudo等命令權限其實還是無法使用的. 

這裏想到很早之前信息王萌老師曾經在我不小心幹翻 一個oracle RAC節點時提供的setfacl的解決思路.
當時爲2016年一次POC測試. 王老師搭建了一個RAC環境 然後我很榮幸的 chmod 777 / software -R 了下.
直接宕機. 
具體思路爲:
找一臺比較乾淨的機器, 需要注意儘量文件比較少,進程也比較少的機器,不然acl的列表可能會非常龐大. 
mkdir /acl
getfacl / -R > /acl/dm.acl
這個命令可以遞歸的將當前系統的文件目錄權限全部獲取到. 
然後將文件複製到 被開發搞崩的機器上面
setfacl --restore=/acl/dm.acl 就可以恢復. 

結論

修改好後重啓一下服務器. 
驗證可以登錄
用命令打開達夢數據庫

cd /opt/dmdbms/bin && nohup ./dmserver /opt/dmdbms/data/DAMENG/dm.ini &

發現達夢數據庫也正常了. 
問題解決. 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章