切換使用者時提示:cannot change directory to /home/oracle: Permission denied

jinqibingl發表於2012-10-04

切換使用者時提示:cannot change directory to /home/oracle: Permission denied  

su: /bin/bash: Permission denied帶來的疑惑

徒弟說是在當機後出現下面的問題。
在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也存在同樣的影響。

上述是轉載的內容。

前幾天,徒弟也出現了同樣的問題,主要的原因考慮為不明原因的當機後重啟出現問題。可以直接考慮根空間許可權出現問題,不過我這裡還沒有正常根空間許可權的資料,請徒弟看到了,在正常的情況下,對根空間進行STAT,把狀態資料記錄下來,好以後用於比較。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9606200/viewspace-745674/,如需轉載,請註明出處,否則將追究法律責任。

相關文章