歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

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

客戶一個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也存在同樣的影響。

Copyright © Linux教程網 All Rights Reserved