溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何解決Linux常見系統(tǒng)故障su切換用戶帶來的疑惑

發(fā)布時間:2021-11-01 14:50:30 來源:億速云 閱讀:544 作者:柒染 欄目:系統(tǒng)運維

這篇文章給大家介紹如何解決Linux常見系統(tǒng)故障su切換用戶帶來的疑惑,內(nèi)容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

這是一個客戶的案例,客戶的一臺Oracle數(shù)據(jù)庫服務器突然宕機了,由于在線業(yè)務的需要,客戶沒有考慮太多就直接重啟了服務器,系統(tǒng)重新啟動后沒有出現(xiàn)問題,可是接下來,當客戶準備切換到oracle用戶下啟動數(shù)據(jù)庫時,怎么都無法進行su切換,于是問題出現(xiàn)了。

1、案例現(xiàn)象

在root用戶下,su切換到一個普通用戶oracle卻發(fā)生了錯誤,如圖1所示。

如何解決Linux常見系統(tǒng)故障su切換用戶帶來的疑惑

圖1  su切換發(fā)生Permission denied錯誤

于是,嘗試直接通過oracle用戶登錄系統(tǒng),發(fā)現(xiàn)此時的oracle用戶也無法登錄了,出現(xiàn)與上面同樣的錯誤。

2、解決思路

從上面錯誤提示可知是權限出現(xiàn)了問題,那么可以從權限入手進行排查,基本思路如下:

● 用戶目錄/home/oracle權限問題。

● su程序執(zhí)行權限問題。

● 程序依賴的共享庫權限問題。

● SELinux問題導致。

● 系統(tǒng)根空間問題。

3、排查問題

根據(jù)上面的思路,逐一檢查,考慮到su在切換到oracle用戶時會讀取oracle目錄下的環(huán)境變量配置文件,因此,首先檢查/home/oracle目錄的權限是否存在問題:

[root@loaclhost home]# ls -al /home|grep oracle  drwx---- 4 oralce  oinstall 4096 01-31 10:45 oracle

從輸出可知,/home/oracle目錄的屬主是oracle用戶,而oracle用戶對這個目錄具有“rwx”權限,因此,oracle用戶目錄的權限設置是正確的,可以排除這個問題。

接著檢查su執(zhí)行權限問題:

[root@loaclhost home]# 11 /bin/su  -rwsr-xr-x 1 root root 24120 2007-11-30 /bin/su

可見su命令執(zhí)行權限也沒有問題,這個問題也排除了。

繼續(xù)檢查su依賴的共享庫權限,使用ldd命令檢查su命令依賴的共享庫文件,如圖2所示。

如何解決Linux常見系統(tǒng)故障su切換用戶帶來的疑惑

圖2  通過ldd命令檢查su命令依賴的共享庫文件

根據(jù)上面的操作,依次檢查su命令依賴的每個庫文件的權限,發(fā)現(xiàn)也都是正常的,都具有可執(zhí)行權限,因此,共享庫的問題也排除了。

根據(jù)上面的思路,繼續(xù)檢查SELinux的設置,執(zhí)行命令如圖3所示。

如何解決Linux常見系統(tǒng)故障su切換用戶帶來的疑惑

圖3  檢查SELinux的設置

由輸出可知,SELinux處于關閉狀態(tài),這個原因也排除了。

到目前為止,問題變得撲朔迷離,到底是哪里出現(xiàn)問題了呢?作為Linux運維人員,例行檢查系統(tǒng)根分區(qū)狀態(tài)是非常必要的,那么首先檢查一下根分區(qū)的磁盤空間大小,發(fā)現(xiàn)剩余空間還有很多,排除空間問題。既然報的錯誤是權限有問題,那么只要以權限為線索,不偏離這個核心就沒錯,于是繼續(xù)嘗試檢查/home目錄下各個用戶的權限,執(zhí)行命令如圖4所示。

如何解決Linux常見系統(tǒng)故障su切換用戶帶來的疑惑

圖4  檢查/home目錄下各個用戶的權限

從輸出看每個用戶的目錄權限,都是“rwx------”,即“700”,完全沒有問題。仔細檢查思路,發(fā)現(xiàn)當前的目光一直停留在用戶對應的目錄上,而忽略了其他輸出信息,而問題就藏在之前沒有關注的信息中。在這個命令輸出的前兩行中,第一行權限對應的目錄是“.”,代表當前目錄,也就是/home目錄,權限為“rwxr-xr-x”,即“755”,第二行權限對應的目錄是“..”,也就是根目錄,權限卻為“rw-rw-rw-”,即“666”,此時,問題終于查找到了,原來是根目錄權限問題。

將根目錄權限設置為“rw-rw-rw-”,顯然是不正常的。在正常情況下根目錄的權限應該是“755”,為何設置成了這樣,很大的可能是誤操作。通過ls命令查看根目錄的權限時展示不是很清楚,也容易被很多運維人員忽略,其實我們可以通過另一個命令stat來詳細查看每個目錄的權限,如圖5所示。

如何解決Linux常見系統(tǒng)故障su切換用戶帶來的疑惑

圖5  通過stat命令查看根目錄權限

通過這個命令,可以很清晰地看到,根目錄的權限是“0666”,這才是導致su執(zhí)行失敗的根本原因。

4、解決問題

知道了問題產(chǎn)生的原因,解決問題就非常簡單,執(zhí)行如下命令:

[root@localhost ~]# chmod 755 /

然后就可順利執(zhí)行su切換命令。

最后,做個簡單的總結,這個問題主要是由于根目錄沒有可執(zhí)行權限,而Linux下所有的操作都是在根目錄下進行的,進而導致/home/oracle目錄沒有執(zhí)行權限。其實根目錄權限的丟失對于系統(tǒng)中運行的每個用戶存在同樣的影響。因此,在權限出現(xiàn)問題時,一定要注意根目錄的權限。

關于如何解決Linux常見系統(tǒng)故障su切換用戶帶來的疑惑就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI