除錯 rsh, rcp, rlogin, rdist 許可被拒(Permission Denied )問題(zt)

tonykorn97發表於2008-04-16

按照平時的操作,有的伺服器不需要設定hosts.equiv 檔案,只需要設定.rhosts檔案就可以了,今天的一臺伺服器沒有設定hosts.equiv檔案一直出現Permission Denied ,設定完hosts.equiv就可以了。

下面的是IBM的除錯rsh等工具的提示:


內容提要:
在使用rsh, rcp, rlogin, rdist 等各種遠端命令時有時會出現許可被拒(Permission Denied )等錯誤,如下所示:
rcp 0826-813 – permission denied
本文件將針對於如何除錯解決這些問題進行簡單的討論,並透過例項說明幾種常用的除錯方法及其過程。內容適用於AIX 5L 以及AIX 4.3。

說明:
1. 檢查這些遠端命令所需要的基本設定
配置這些遠端命令需要正確設定 .rhosts 或者 hosts.equiv 檔案。兩個關鍵點是
1)確認相關檔案的內容以及許可權設定
.rhosts 和hosts.equiv分別位於$HOME目錄以及/etc目錄下。它們的許可許可權應該設定為600。內容應該包括你正在使用的主機的機器名以及你登入的 使用者名稱。特別注意檔案中登記的主機名要和實際的主機名完全匹配。這些檔案應該存在於遠端命令操作的伺服器上。參看man 幫助可以得到更多的關於這兩個檔案及其要求的格式的相關資訊。

2)確認正向及反向名解析( forward and reserve name resolution )在兩個系統上能正常工作,並且解析的結果和你想要的一致。檢測正向及反向名解析( forward and reserve name resolution )可以使用host 命令檢查主機名和IP地址。參見下列例子:

在本例中你想 rsh 從一臺叫 fozzie 主機到一臺名叫 bert 的機器,並且作為root執行date命令。

在fozzie 機器上:
# rsh bert date
#rshd: 0826-813 Permission is denied
出現許可被拒的錯誤,現在到bert機器上檢查檔案內容以及許可權設定:
# cat /.rhosts |grep fozzie
#fozzie root
(正確的 .rhosts檔案中存在客戶機的主機名和要登入進來的使用者名稱)
# ls -l /.rhosts
# -rw------- (許可許可權設定為600,也是正確! )
檔案內容和許可權設定似乎都正確,那麼問題出在什麼地方呢?再來檢查名解析:
# cat /etc/netsvc.conf
# hosts=local,bind4
(顯示名解析將先使用本機/etc/hosts,然後才是 DNS)
# cat /etc/hosts |grep fozzie
#
(在本機host檔案中沒有發現fozzie,因此bert 解析 fozzie 經DNS)
# host fozzie
#fozzie.austin.ibm.com is 10.1.4.18
# host 10.1.4.18
#fozzie.austin.ibm.com is 10.1.4.18
由此可知,透過DNS解析出的fozzie實際上是fozzie.austin.ibm.com,這和包含在.rhosts 中的fozzie是不匹配的。為了解決這個問題你可以透過編輯/etc/hosts增加一個fozzie的短名字,或者編輯.rhosts使fozzie 使用其長名。為了和/etc/netsvc.conf保持一致,編輯/etc/hosts檔案
# vi /etc/hosts
增加以下一行
10.1.4.18 fozzie

再次使用host命令,
# host fozzie
fozzie is 10.1.4.18
# host 10.1.4.18
fozzie is 10.1.4.18

現在回到fozzie 機器,再試rsh
# rsh bert date
#Tue May 21 10:16:39 CDT 2004

2. 利用 who am i 命令進行除錯
另一個在除錯遠端命令的名解析功能時很有用的命令是who am i。參見下例:
例:
telnet 或者 rlogin 從fozzie 到 bert 然後執行 who am i
#who am i
#root pts/0 Sep 21 10:18 (10.1.4.18)
這顯示命令執行者(我-i)是root ,IP地址為10.1.4.18。bert 是透過IP 地址而不是透過名字來找fozzie。為了執行遠端命令,在bert上的
.rhosts中必須反映這一點。所以.rhosts檔案應該包含:
10.1.4.18 root

3. 其它除錯技巧
在除錯遠端命令相關的問題中,其它的相關檢查專案可能包括:
(1) 身份驗證( authentication):
# lsauthent--&gtkrb5 standard AIX
可能需要更改為 std
# chauthent -std
# lsauthent-> Standard AIX

(2) 各種命令的許可許可權( permissions )
# ls -al /usr/bin/rsh
-r-sr-xr-x 2 root system 303506 Feb 10 14:11 /usr/bin/rsh
# ls -l /usr/sbin/rshd
-r-sr-xr-- 1 root system 24556 Feb 10 14:12 /usr/sbin/rshd
# ls -l /usr/bin/rcp
-r-sr-xr-x 1 root system 319972 Apr 08 2001 /usr/bin/rcp
# ls -al /usr/bin/rlogin
-r-sr-xr-x 1 root bin 306328 Apr 10 2002 /usr/bin/rlogin
# ls -al /usr/sbin/rlogind
-r-sr-xr-- 1 root system 33864 Jul 17 2002/usr/sbin/rlogind

除了rshd 和rlogind 是 4554外 ,其它各項都應該是4555 -r-sr-xr-x 。

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

相關文章