hosts.equiv和.rhosts檔案(轉)

post0發表於2007-08-09
hosts.equiv和.rhosts檔案(轉)[@more@]

cloudsky (曉舟·軒轅明月)

遠端使用者啟動rlogin訪問你的本地主機,此時做如下安全性檢查:

1. 本地rlogind在本地/etc/passwd檔案中尋找遠端使用者名稱,沒有則拒絕訪問

2. /etc/passwd中存在遠端使用者名稱,rlogind在/etc/hosts.equiv尋找遠端主機名,找到則允許訪問。

3. /etc/hosts.equiv無遠端主機名,rlogind在$HOME/.rhosts尋找遠端主機名,找到且該項後無使用者名稱則允許訪問,找到且該項後有使用者名稱,若遠端使用者名稱位於其中,則允許訪問。注意這裡的$HOME是與遠端使用者同名的本機使用者的主目錄。

4. 若透過了/etc/passwd的檢查,但沒有透過/etc/hosts.equiv或者$HOME/.rhosts的檢查,遠端使用者給出口令可以登入本機,但無法使用rcp、rsh等。反之則可以使用rcp或者rsh。

5. /etc/hosts.equiv中的+意味著任意主機,此時與/etc/hosts無關。netterm下rlogin除root外的所有使用者可以成功,solaris下簡單的rlogin hostname同netterm,但是rlogin -l username hostname不成功。這個事實說明netterm下rlogin的時候,指定的引數實際上是遠端主機的當前使用者名稱。還說明hosts.equiv檔案不支援rlogin -l username hostname,不支援root的rlogin。

值得注意的是兩個+號出現在$ HOME/.rhosts中是非常危險的,意味著任意主機任意使用者都可以不用口令登入到你的使用者上來。.rhosts中的第一個+意味著所有主機,與 /etc/hosts檔案無關。.rhosts中的第二個+意味著所有使用者,與/etc/passwd檔案無關。若只有一個+,netterm中的 rlogin可以成功,但來自sco root下的rlogin -l jhli hostname不成功,來自sco jhli的rlogin -l jhli hostname和rlogin hostname都成功。說明當.rhosts檔案中只有主機名時,不支援rlogin -l username hostname,這點和/etc/hosts.equiv一樣。若+ root,則netterm因無法實現rlogin -l username hostname而失敗(只能實現rlogin hostname),來自sco root下的rlogin -l jhli hostname成功。+ +則都成功。注意,$HOME/.rhosts支援root的rlogin。

當這兩個檔案中沒有使用+號代表所有主機時,與/etc/hosts檔案有關。這兩個檔案中指定的hostname必須是/etc/hosts檔案中出現的,而且必須是主機名,IP地址和別名無效。在/etc/hosts檔案中別名位於第三列。做主機判斷時與在遠端主機上hostname命令所顯示的東西無關,與遠端主機上的 /etc/hosts定義無關。如果出現與這裡講述不符合的,是因為緩衝沒有得到重新整理的緣故,可以透過ping相關名字得到檢驗。此外,若沒有使用+號, rlogin localhost、rlogin 127.0.0.1的效果和rlogin 134.*.*.*、rlogin zhuzhou的效果不一樣,前者的檢查不會透過。當hosts.equiv中定義為localhost時,效果則反過來。

6. rlogin -l username hostname和rlogin hostname的檢查有點細微的差別,首先在/etc/passwd的檢查中是以-l的引數為準的,沒有-l引數才使用遠端主機的當前使用者名稱,所謂當前使用者名稱是考慮了su出來的使用者。其次,$HOME也是先以-l引數為準。第三,$HOME/.rhosts檔案中的使用者名稱不是針對-l引數來的,而是針對遠端主機的當前使用者名稱來的,但是對於這個遠端主機的當前使用者名稱,並不要求出現在/etc/passwd檔案中。這第6條尤其重要,許多不成功的$ HOME/.rhost就是因為對第6條的不瞭解。

7. $HOME/.rhosts檔案的許可權問題,chmod 0都沒有影響,不過當時是處理root使用者。對於一般使用者,一定要保證.rhosts檔案對於$HOME的屬主是可讀的。一般來說,這個檔案最好 chmod 400。對於root,如果不希望某個使用者建立自己的.rhosts或者想替該使用者建立.rhosts後不允許該使用者自己修改,可以透過chown root .rhosts然後chmod 444 .rhosts實現。除了root,如果$HOME/.rhosts檔案的屬主和$HOME的屬主不一致,檢查將失敗。

8. $HOME/.rhosts檔案中每行只跟一個使用者名稱,若想多個指定,只好分多行指定使用者名稱。

9. sco unix下$HOME/.rhosts中若用+代表主機,與其他Unix系統不同,這裡的+沒有任何特殊的意義,所以檢查將失敗。但是使用者名稱仍然可以用+代表。並且sco unix下若root的.rhosts檔案go+w,則檢查失敗。

10. 建議man rhosts看看,各個系統有許多細微的差別。(linux知識寶庫

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

相關文章