Linux下的R命令的配置
^^^^^^^^^^^^^^^^^^
 - 作者:臭豆腐[trydofor.com]
 - 日期:2005-06-21
 - 授权:署名-非商业-保持一致 1.0 协议
 - 声明:拷贝、分发、呈现和表演本作品,请保留以上全部信息。

0. 文档目录
^^^^^^^^^^
[[<=$INDEX]]

1. 问题描述
^^^^^^^^^^^
R-Command是rsh,rcp和rlogin.
在现在的linux发行版中以退出历史舞台,被ssh,scp所取代.
基本应用,是对早期系统的维护或特殊要求.

2. 测试环境
^^^^^^^^^^
机器A(192.168.1.3)和机器B(192.168.1.4)配置相同:
RedHat 9.0  kenerl:2.4.20-8

3. 安装服务
^^^^^^^^^^
============ tty : root@192.168.1.4 ==============
#RedHat是不默认安装R服务了,rpm在RedHat的CD3的以下位置
#RedHat/RPMS/rsh-server-0.17-14.i386.rpm
rpm -ivh rsh-server*.rpm;

ntsysv
#setup 命令也可
# 选中列表中的以下服务
# [*] rexec
# [*] rlogin
# [*] rsh

#重启动xinetd服务器
service xinetd restart
==================================================

4. 配置服务
^^^^^^^^^^
服务的配置比较简单,主要涉及到一下几个文件
/etc/hosts.equiv (默认不存在)
$HOME/.rhost (默认不存在)
前者是基于主机信任,后者是基于主机加用户信任

这里只做后者,所以没有/etc/hosts.equiv
============ tty : root@192.168.1.4 ==============
cat ~/.rhosts
>trydofor_com  tdf
>192.168.1.3   tdf

#增加登陆方式
echo rsh >>/etc/securetty
echo rlogin >>/etc/securetty
==================================================

5. 验证过程
^^^^^^^^^^
..................................................
 -              find remote user                
 |            +------------------+ No           
      rlogind |                  +-----> Deny   
 1   -------->|    /etc/passwd   | YES          
              |                  +----+         
 |            +------------------+    |         
 -  +---------------------------------+         
 |  |           find remote host                
    |         +------------------+ Yes          
 2  |         |                  +-----> Allow  
    | rlogind | /etc/hosts.equiv | No           
 |  +-------->|                  +----+         
 -            +------------------+    |         
 |  +---------------------------------+         
    |        find remote host & user            
 3  |         +------------------+ Yes          
    |         |                  +-----> Allow  
 |  | rlogind |   $HOME/.rhosts  | No           
 -  +-------->|                  +-----> Prompt 
              +------------------+              
..................................................
1) rlogind在/etc/passwd中寻找远程用户名:
    没有则拒绝,反之,进行2
2) rlogind在/etc/hosts.equiv寻找远程主机名:
    有则允许访问,反之,进行3
3) rlogind在$HOME/.rhosts寻找远程主机名和用户名:
    有且该项后无用户名则允许访问。
    有且该项后有用户名,且远程用户名位于其中,则允许访问。
    反之,则提示远程用户给出口令可以登录本机。(无法使用rcp、rsh)

[NOTE]::这里的$HOME是与远程用户同名的本机用户的主目录。

6. 注意事项
^^^^^^^^^^
* $HOME/.rhosts 必须是644权限的,否则,rsh时会提示Permission deny
* /etc/hosts.equiv中的+ 意味着任意主机,与/etc/hosts无关。
   $HOME/.rhosts 的+ +意味着任何机器任何用户,与/etc/passwd无关。
   这些都是极度危险的。
* rlogin -l username hostname
   /etc/passwd的验证和$HOME的确定是以-l参数为准。
   但,$HOME/.rhosts中的用户名不是以-l参数为准,而是远程主机的当前用户,
   并且不要求其出现在/etc/passwd文件中。
* 如果出现"Host address mismatch" 错误提示,说明/etc/hosts里有重复主机名.