系统管理指南:网络服务

登录到远程系统 (rlogin)

通过 rlogin 命令,可以登录到远程系统。登录之后,可以浏览远程文件系统并处理其内容(受授权限制)、复制文件或执行远程命令。

如果要登录到的系统位于远程域中,请务必在系统名称后附加域名。在以下示例中,SOLAR 是远程域的名称:

rlogin pluto.SOLAR

此外,也可以通过键入 Ctrl-D 组合键随时中断远程登录操作。

远程登录验证 (rlogin)

通过远程系统或网络环境,可以执行 rlogin 操作的验证(确定身份)。

这些验证形式的主要差别在于它们要求与您进行的交互类型以及建立验证的方式。如果远程系统尝试对您进行验证,则除非您设置 /etc/hosts.equiv.rhosts 文件,否则将提示您输入口令。如果网络尝试对您进行验证,则不会要求您输入口令,因为网络已经知道您的身份。

当远程系统尝试对您进行验证时,将会依据其本地文件中的信息,尤其是在满足下列其中一个条件时:

网络验证依据下列两种方法之一:


注 –

网络验证通常会取代系统验证。


/etc/hosts.equiv 文件

/etc/hosts.equiv 文件包含远程系统的可信主机列表,每行列示一台主机。如果用户尝试从此文件中列出的主机之一远程登录(使用 rlogin 命令),并且如果远程系统可以访问用户的口令项,则远程系统允许用户在不使用口令的情况下登录。

典型的 hosts.equiv 文件具有以下结构:


host1

host2 user_a

+@group1

-@group2

如果在 hosts.equiv 中创建一个简单的主机项(如上述 host1 项),则表示该主机是可信的,该计算机中的任何用户也是可信的。

如果还包含用户名(如示例中的第二项),则该主机只有在指定用户尝试访问时才可信。

前面带有加号 (+) 的组名表示,该网络组中的所有计算机均被视为可信。

前面带有减号 (–) 的组名表示,该网络组中的所有计算机均被视为不可信。

使用 /etc/hosts.equiv 文件时的安全风险

/etc/hosts.equiv 文件存在安全风险。如果将 /etc/hosts.equiv 文件保存在系统上,则应仅包含网络中的可信主机。该文件不应包含属于不同网络的任何主机或公共区域中的所有计算机。例如,不应包含终端室内的主机。

使用不受信任的主机可能产生严重的安全问题。请将 /etc/hosts.equiv 文件替换为正确配置的文件,或者完全删除该文件。

/etc/hosts.equiv 文件中的一个 + 行表示信任所有已知主机。

.rhosts 文件

.rhosts 文件是 /etc/hosts.equiv 文件的用户等效文件。此文件包含主机-用户组合列表,而不包含一般意义的主机。如果此文件中列出了主机-用户组合,则指定用户将被授予从指定主机登录而不必提供口令的权限。

请注意,.rhosts 文件必须驻留在用户起始目录的顶层。如果 .rhost 文件位于子目录中,则不会访问这些文件。

用户可在其起始目录中创建 .rhosts 文件。使用 .rhosts 文件是另外一种允许在不使用 /etc/hosts.equiv 文件的情况下,在不同系统的用户自己帐户之间进行受信任访问的方法。

使用 .rhosts 文件时的安全风险

遗憾的是,.rhosts 文件存在严重的安全问题。虽然 /etc/hosts.equiv 文件受系统管理员的控制并且可以有效地管理,但任何用户都可以创建 .rhosts 文件,从而可以在系统管理员不知情时对其选择的任何人授予访问权限。

如果所有用户起始目录都在一台服务器上,并且只有某些人员才在该服务器上具有超级用户权限,则防止用户使用 .rhosts 文件的一种好方法就是以超级用户身份在用户起始目录中创建一个空文件。然后,将此文件的权限更改为 000,这样即使作为超级用户也很难更改它。此更改可有效地防止用户因不负责任地使用 .rhosts 文件而导致的系统安全风险。但是,如果用户能够更改指向其起始目录的有效路径,则此更改将不能解决任何问题。

管理 .rhosts 文件的唯一安全方法是完全禁用它们。有关详细说明,请参见如何搜索并删除 .rhosts 文件。作为系统管理员,可以经常检查系统以了解此策略的违规情况。此策略可能存在一种例外情况,即超级用户帐户可能需要使用 .rhosts 文件来执行网络备份和其他远程服务。

链接远程登录

如果系统配置正确,则可链接远程登录。 例如,earth 中的用户可登录到 jupiter,并从该处决定登录到 pluto

该用户也可以从 jupiter 注销然后直接登录到 pluto,但此类型的链接更加方便。

要链接远程登录而不必提供口令,必须正确设置 /etc/hosts.equiv.rhosts 文件。

直接或间接远程登录

通过 rlogin 命令,可以直接或间接地登录到远程系统。

使用缺省用户名(即当前登录到本地系统的个人用户名)尝试直接远程登录。这是最常见的远程登录形式。

在远程登录操作时,可以通过提供不同的用户名来尝试间接远程登录。 这是在从临时借用的工作站尝试登录的情况下采用的远程登录方式。例如,如果您在同事的办公室并且需要检查您的起始目录中的文件,则可以从同事的系统远程登录到您的系统。但是,在执行间接远程登录时应提供您自己的用户名。

下表概述了直接和间接登录与验证方法之间的相关性。

表 29–2 登录方法与验证方法 (rlogin) 之间的相关性

登录类型 

用户名提供者 

验证 

口令 

直接 

系统 

网络 

无 

 

 

系统 

必需 

间接 

用户 

网络 

无 

 

 

系统 

必需  

远程登录后发生的情况

登录到远程系统时,rlogin 命令将尝试查找您的起始目录。如果 rlogin 命令找不到您的起始目录,它会将您指定给远程系统的根 (/) 目录。例如:


Unable to find home directory, logging in with / 

但是,如果 rlogin 命令找到您的起始目录,它将获取 .cshrc.login 文件。因此,在远程登录后,提示符即成为标准登录提示符,并且当前目录与本地登录时的目录相同。

例如,如果常规提示符显示系统名和工作目录,并且在登录时工作目录是您的起始目录,则登录提示符与以下类似:


earth(/home/smith):

随后,当您登录到远程系统时,则不管您从哪个目录输入 rlogin 命令,都会显示类似的提示符并且工作目录是您的起始目录:


earth(/home/smith): rlogin pluto

.

.

.

pluto(/home/smith):

唯一的差别在于远程系统名称将替代提示符开头的本地系统名称。远程文件系统相当于您的起始目录。

实际上,如果将目录更改为 /home 然后运行 ls,则会显示以下内容:


earth(home/smith): cd ..

earth(/home): ls

smith  jones

Procedure如何搜索并删除 .rhosts 文件

  1. 成为超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 使用 find(1) 命令搜索并删除 .rhosts 文件。


    # find home-directories -name .rhosts -print -exec rm {} \;
    
    home-directories

    标识指向用户起始目录所在目录的路径。请注意,一次可输入多个路径来搜索多个起始目录。

    -name .rhosts

    标识文件名。

    -print

    列显当前路径名。

    -exec rm {} \;

    指示 find 命令将 rm 命令应用于通过匹配文件名标识的所有文件。

    find 命令将从指定目录开始搜索名为 .rhosts 的所有文件。如果找到此类文件,find 将在屏幕上列显相应路径并删除该文件。


示例 29–1 搜索并删除 .rhosts 文件

以下示例搜索并删除 /export/home 目录的所有用户起始目录中的 .rhosts 文件。


# find /export/home -name .rhosts -print | xargs -i -t rm {} \;

如何查明远程系统是否在运行

使用 ping 命令查明远程系统是否在运行。


$ ping system-name | ip-address
system-name

远程系统的名称

ip-address

远程系统的 IP 地址

ping 命令将返回以下三条消息之一:

状态消息 

说明 

system-name is alive

可通过网络访问系统。 

ping: unknown host system-name

系统名未知。 

ping: no answer from system-name

系统已知,但当前未运行。  

如果您对其执行 "ping" 操作的系统位于其他域中,则返回消息还可包含路由信息,不过您可以忽略该信息。

ping 命令的超时时间为 20 秒。实际上,如果该命令在 20 秒内未接收到响应,则会返回第三条消息。您可以通过键入 time-out 值(以秒为单位),强制 ping 等待更长(或更短)的时间:


$ ping system-name | ip-address time-out

有关更多信息,请参见 ping(1M)

如何查找已登录到远程系统的用户

使用 rusers(1) 命令查找已登录到远程系统的用户。


$ rusers [-l] remote-system-name
rusers

(无选项)显示系统名称,后跟当前已登录到系统的用户的名称,包括超级用户

-l

显示有关每个用户的其他信息:用户的登录窗口、登录时间和日期、已登录时间以及用户从中登录的远程系统的名称


示例 29–2 查找已登录到远程系统的用户

以下示例显示 rusers 的简短输出。


$ rusers pluto

pluto    smith  jones

在以下示例中,较长版本的 rusers 显示两个用户已登录到远程系统 starbug。第一个用户在 9 月 10 日从系统控制台登录并且已登录 137 小时 15 分钟。第二个用户在 9 月 14 日从远程系统 mars 登录。


$rusers -l starbug

root         starbug:console           Sep 10 16:13  137:15

rimmer       starbug:pts/0             Sep 14 14:37         (mars)

如何登录到远程系统 (rlogin)

使用 rlogin(1) 命令登录到远程系统。


$ rlogin [-l user-name] system-name
rlogin

(无选项)使用当前用户名有效地直接登录到远程系统

-l user-name

使用您提供的用户名有效地间接登录到远程系统

如果网络尝试对您进行验证,将不会提示您输入口令。如果远程系统尝试对您进行验证,则会要求您提供口令。

如果操作成功,则 rlogin 命令会显示有关您最近登录该系统的简要信息、远程系统上运行的操作系统版本以及您的起始目录中是否有邮件等待查阅。


示例 29–3 登录到远程系统 (rlogin)

以下示例显示直接远程登录 pluto 的输出。网络已对用户进行了验证。


$ rlogin starbug

Last login: Mon Jul 12 09:28:39 from venus

Sun Microsystems Inc.   SunOS 5.8       February 2000

starbug:

以下示例显示间接远程登录 pluto 的输出,并且用户由远程系统进行验证。


$ rlogin -l smith pluto

password: user-password

Last login: Mon Jul 12 11:51:58 from venus

Sun Microsystems Inc.   SunOS 5.8       February 2000

starbug: 

如何从远程系统注销 (exit)

使用 exit(1) 命令从远程系统注销。


$ exit

 

示例 29–4 从远程系统注销 (exit)

此示例说明用户 smith 如何从系统 pluto 注销。


$ exit

pluto% logout

Connection closed.

earth%