客戶一個oracle突然當機了,由於業務啟動,客戶下意識的重啟了伺服器,系統是起來了,準備切換到 oracle使用者下啟動資料庫,可以怎麼都無法su切換,真是火上澆油呀,描述如下:
在root使用者下,su到一 個普通使用者oracle,得到如下錯誤:
[root@localhost ~]# su - oracle
su: warning: cannot change directory to /home/oracle: Permission denied
su: /bin/bash: Permission denied
而 oracle使用者也無法通過直接登入,出現同樣錯誤。
這是一個非常奇怪的問題,到底是什麼導致的呢?思路 如下:
1,程式執行許可權問題
2,程式依賴的共用庫許可權問題
3,目錄許可權問題
4,根空間問題。
檢查/bin/bash,許可權正確,檢查/home/oracle許可權正確,檢查/lib/ld-***.so,許可權也正確。
繼續調 試,檢查/etc/passwd,將oracle的home設定為/tmp,把/tmp設定為777,這個許可權應該是最寬鬆的。
而su 出現同樣的錯誤。
也就是oracle使用者無法訪問777許可權的/tmp。
問題到底出現在哪裡呢?
最後
通 過star命令,看到了問題根本,
[root@localhost ~]#stat /
輸出如下:因為你ls是看不到的。
File: “/”
Size: 1024 Blocks: 2 IO Block: 1024 目錄
Device: 803h/2051d Inode: 2 Links: 22
Access: (0666/drw-rw-rw-) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2007-12-01 22:28:48.000000000 +0800
Modify: 2007-12-01 22:28:34.000000000 +0800
Change: 2007-12-01 23:17:35.000000000 +0800
問題出來了,這裡的許可權 是錯誤的,X許可權的丟失造成的。
[root@localhost ~]#chmod 755 /
修改後,問題消失。
產生上述問 題的方法:
第一種,chmod 666 /,可以導致。
或者,
第二種,chmod 700 /lib/ld-xxxx.so,也可 以導致su失敗。
有興趣可以自己試一下。
/ 許可權的丟失對於各種運行在自己使用者身份上的daemon也存 在同樣的影響。
本文出自 “技術成就夢想” 部落格,請務必保留此出處 http://ixdba.blog.51cto.com/2895551/526427