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里有重复主机名.