本章介绍登录到远程系统并管理其文件所需的全部任务。以下是本章中的逐步说明列表。
本章介绍了用于登录远程系统并从中复制文件的任务,如下表中所述。
表 29–1 任务列表: 访问远程系统
任务 |
说明 |
参考 |
---|---|---|
登录到远程系统 (rlogin) |
| |
登录到远程系统 (ftp) |
| |
使用 rcp 复制远程文件 |
使用 rcp 命令将文件复制到远程系统,以及从远程系统复制文件。 |
通过 rlogin 命令,可以登录到远程系统。登录之后,可以浏览远程文件系统并处理其内容(受授权限制)、复制文件或执行远程命令。
如果要登录到的系统位于远程域中,请务必在系统名称后附加域名。在以下示例中,SOLAR 是远程域的名称:
rlogin pluto.SOLAR
此外,也可以通过键入 Ctrl-D 组合键随时中断远程登录操作。
通过远程系统或网络环境,可以执行 rlogin 操作的验证(确定身份)。
这些验证形式的主要差别在于它们要求与您进行的交互类型以及建立验证的方式。如果远程系统尝试对您进行验证,则除非您设置 /etc/hosts.equiv 或 .rhosts 文件,否则将提示您输入口令。如果网络尝试对您进行验证,则不会要求您输入口令,因为网络已经知道您的身份。
当远程系统尝试对您进行验证时,将会依据其本地文件中的信息,尤其是在满足下列其中一个条件时:
网络验证依据下列两种方法之一:
/etc/hosts.equiv 文件包含远程系统的可信主机列表,每行列示一台主机。如果用户尝试从此文件中列出的主机之一远程登录(使用 rlogin 命令),并且如果远程系统可以访问用户的口令项,则远程系统允许用户在不使用口令的情况下登录。
host1 host2 user_a +@group1 -@group2 |
如果在 hosts.equiv 中创建一个简单的主机项(如上述 host1 项),则表示该主机是可信的,该计算机中的任何用户也是可信的。
如果还包含用户名(如示例中的第二项),则该主机只有在指定用户尝试访问时才可信。
前面带有加号 (+) 的组名表示,该网络组中的所有计算机均被视为可信。
前面带有减号 (–) 的组名表示,该网络组中的所有计算机均被视为不可信。
/etc/hosts.equiv 文件存在安全风险。如果将 /etc/hosts.equiv 文件保存在系统上,则应仅包含网络中的可信主机。该文件不应包含属于不同网络的任何主机或公共区域中的所有计算机。例如,不应包含终端室内的主机。
使用不受信任的主机可能产生严重的安全问题。请将 /etc/hosts.equiv 文件替换为正确配置的文件,或者完全删除该文件。
/etc/hosts.equiv 文件中的一个 + 行表示信任所有已知主机。
.rhosts 文件是 /etc/hosts.equiv 文件的用户等效文件。此文件包含主机-用户组合列表,而不包含一般意义的主机。如果此文件中列出了主机-用户组合,则指定用户将被授予从指定主机登录而不必提供口令的权限。
请注意,.rhosts 文件必须驻留在用户起始目录的顶层。如果 .rhost 文件位于子目录中,则不会访问这些文件。
用户可在其起始目录中创建 .rhosts 文件。使用 .rhosts 文件是另外一种允许在不使用 /etc/hosts.equiv 文件的情况下,在不同系统的用户自己帐户之间进行受信任访问的方法。
遗憾的是,.rhosts 文件存在严重的安全问题。虽然 /etc/hosts.equiv 文件受系统管理员的控制并且可以有效地管理,但任何用户都可以创建 .rhosts 文件,从而可以在系统管理员不知情时对其选择的任何人授予访问权限。
如果所有用户起始目录都在一台服务器上,并且只有某些人员才在该服务器上具有超级用户权限,则防止用户使用 .rhosts 文件的一种好方法就是以超级用户身份在用户起始目录中创建一个空文件。然后,将此文件的权限更改为 000,这样即使作为超级用户也很难更改它。此更改可有效地防止用户因不负责任地使用 .rhosts 文件而导致的系统安全风险。但是,如果用户能够更改指向其起始目录的有效路径,则此更改将不能解决任何问题。
管理 .rhosts 文件的唯一安全方法是完全禁用它们。有关详细说明,请参见如何搜索并删除 .rhosts 文件。作为系统管理员,可以经常检查系统以了解此策略的违规情况。此策略可能存在一种例外情况,即超级用户帐户可能需要使用 .rhosts 文件来执行网络备份和其他远程服务。
如果系统配置正确,则可链接远程登录。 例如,earth 中的用户可登录到 jupiter,并从该处决定登录到 pluto。
该用户也可以从 jupiter 注销然后直接登录到 pluto,但此类型的链接更加方便。
要链接远程登录而不必提供口令,必须正确设置 /etc/hosts.equiv 或 .rhosts 文件。
使用缺省用户名(即当前登录到本地系统的个人用户名)尝试直接远程登录。这是最常见的远程登录形式。
在远程登录操作时,可以通过提供不同的用户名来尝试间接远程登录。 这是在从临时借用的工作站尝试登录的情况下采用的远程登录方式。例如,如果您在同事的办公室并且需要检查您的起始目录中的文件,则可以从同事的系统远程登录到您的系统。但是,在执行间接远程登录时应提供您自己的用户名。
表 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 |
成为超级用户或承担等效角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2 章 “使用 Solaris Management Console(任务)”。
使用 find(1) 命令搜索并删除 .rhosts 文件。
# find home-directories -name .rhosts -print -exec rm {} \; |
标识指向用户起始目录所在目录的路径。请注意,一次可输入多个路径来搜索多个起始目录。
标识文件名。
列显当前路径名。
指示 find 命令将 rm 命令应用于通过匹配文件名标识的所有文件。
find 命令将从指定目录开始搜索名为 .rhosts 的所有文件。如果找到此类文件,find 将在屏幕上列显相应路径并删除该文件。
以下示例搜索并删除 /export/home 目录的所有用户起始目录中的 .rhosts 文件。
# find /export/home -name .rhosts -print | xargs -i -t rm {} \; |
$ ping system-name | ip-address |
远程系统的名称
远程系统的 IP 地址
ping 命令将返回以下三条消息之一:
状态消息 |
说明 |
---|---|
system-name is alive |
可通过网络访问系统。 |
ping: unknown host 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 的简短输出。
$ 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(1) 命令登录到远程系统。
$ rlogin [-l user-name] system-name |
(无选项)使用当前用户名有效地直接登录到远程系统
使用您提供的用户名有效地间接登录到远程系统
如果网络尝试对您进行验证,将不会提示您输入口令。如果远程系统尝试对您进行验证,则会要求您提供口令。
如果操作成功,则 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(1) 命令从远程系统注销。
$ exit |
$ exit pluto% logout Connection closed. earth% |
ftp 命令打开 Internet 文件传输协议的用户接口。此用户接口又称为命令解释程序,它允许您登录到远程系统并对其文件系统执行各种操作。下表概述了主要操作。
与 rlogin 和 rcp 相比,ftp 的主要优点在于 ftp 不要求远程系统运行 UNIX。不过,远程系统却需要进行 TCP/IP 通信配置。但是,与 ftp 相比,rlogin 提供使用的文件处理命令更丰富。
命令 |
说明 |
---|---|
ftp |
访问 ftp 命令解释程序。 |
ftp remote-system |
建立与远程系统的 ftp 连接。有关说明,请参见如何打开与远程系统的 ftp 连接。 |
open |
从命令解释程序登录到远程系统。 |
close |
从远程系统注销并返回到命令解释程序。 |
bye |
退出 ftp 命令解释程序。 |
help |
列出所有 ftp 命令;或者如果提供了命令名称,则简要说明该命令所执行的操作。 |
reset |
使命令-回复序列与远程 ftp 服务器再次同步。 |
ls |
列出远程工作目录的内容。 |
pwd |
显示远程工作目录的名称。 |
cd |
更改远程工作目录。 |
lcd |
更改本地工作目录。 |
mkdir |
在远程系统上创建目录。 |
rmdir |
删除远程系统上的目录。 |
get, mget |
将远程工作目录中的某个文件(或多个文件)复制到本地工作目录。 |
put, mput |
将本地工作目录中的某个文件(或多个文件)复制到远程工作目录。 |
delete, mdelete |
删除远程工作目录中的某个文件(或多个文件)。 |
有关更多信息,请参见 ftp(1)。
您必须具有 ftp 验证,如远程登录验证 (ftp) 中所述。
使用 ftp 命令打开与远程系统的连接。
$ ftp remote-system |
如果连接成功,则会显示确认消息和提示。
键入用户名。
Name (remote-system:user-name): user-name |
如有提示,请键入口令。
331 Password required for user-name: Password: password |
如果要访问的系统已建立了匿名 ftp 帐户,将会提示您输入电子邮件地址作为口令。如果 ftp 接口接受您的口令,则它会显示确认消息和 (ftp>) 提示符。
您现在可使用 ftp 接口提供的任何命令,包括 help。表 29–3 概述了主要命令。
此 ftp 会话由远程系统 pluto 中的用户 smith 建立:
$ ftp pluto Connected to pluto. 220 pluto FTP server ready. Name (pluto:smith): smith 331 Password required for smith: Password: password 230 User smith logged in. ftp> |
ftp> bye 221-You have transferred 0 bytes in 0 files. 221-Total traffic for this sessions was 172 bytes in 0 transfers. 221-Thanks you for using the FTP service on spdev. 221 Goodbye. |
转至要将远程系统中的文件复制到其中的本地系统目录。
$ cd target-directory |
转至源目录。
ftp> cd source-directory |
如果系统正在使用自动挂载程序,则远程系统用户的起始目录可能与 /home 中您的起始目录并行。
确保您对源文件具有读取权限。
ftp> ls -l |
将传送类型设置为 binary。
ftp> binary |
要复制单个文件,请使用 get 命令。
ftp> get filename |
要一次复制多个文件,请使用 mget 命令。
ftp> mget filename [filename ...] |
您可提供一系列单个文件名,也可使用通配字符。mget 命令会分别复制每个文件,并且每次都要求您进行确认。
关闭 ftp 连接。
ftp> bye |
在此示例中,用户 kryten 将打开与系统 pluto 的 ftp 连接,并使用 get 命令来复制 /tmp 目录中的单个文件。
$ cd $HOME ftp pluto Connected to pluto. 220 pluto FTP server (SunOS 5.8) ready. Name (pluto:kryten): kryten 331 Password required for kryten. Password: xxx 230 User kryten logged in. ftp> cd /tmp 250 CWD command successful. ftp> ls 200 PORT command successful. 150 ASCII data connection for /bin/ls (129.152.221.238,34344) (0 bytes). dtdbcache_:0 filea files ps_data speckeysd.lock 226 ASCII Transfer complete. 53 bytes received in 0.022 seconds (2.39 Kbytes/s) ftp> get filea 200 PORT command successful. 150 ASCII data connection for filea (129.152.221.238,34331) (0 bytes). 221 Goodbye. |
在此示例中,同一用户 kryten 使用 mget 命令将 /tmp 目录中的一组文件复制到其起始目录。请注意,kryten 可以接受或拒绝该文件组中的个别文件。
$ ftp> cd /tmp 250 CWD command successful. ftp> ls files 200 PORT command successful. 150 ASCII data connection for /bin/ls (129.152.221.238,34345) (0 bytes). fileb filec filed remote: files 21 bytes received in 0.015 seconds (1.36 Kbytes/s) ftp> cd files 250 CWD command successful. ftp> mget file* mget fileb? y 200 PORT command successful. 150 ASCII data connection for fileb (129.152.221.238,34347) (0 bytes). 226 ASCII Transfer complete. mget filec? y 200 PORT command successful. 150 ASCII data connection for filec (129.152.221.238,34348) (0 bytes). 226 ASCII Transfer complete. mget filed? y 200 PORT command successful. 150 ASCII data connection for filed (129.152.221.238,34351) (0 bytes). 226 ASCII Transfer complete.200 PORT command successful. ftp> bye 221 Goodbye. |
您键入 ftp 命令的目录是本地工作目录,也即此操作的源目录。
建立 ftp 连接。
转至目标目录。
ftp> cd target-directory |
请记住,如果系统正在使用自动挂载程序,则远程系统用户的起始目录可能与 /home 中您的起始目录并行。
确保您对目标目录具有写入权限。
ftp> ls -l target-directory |
将传送类型设置为 binary。
ftp> binary |
要复制单个文件,请使用 put 命令。
ftp> put filename |
要一次复制多个文件,请使用 mput 命令。
ftp> mput filename [filename ...] |
您可提供一系列单个文件名,也可使用通配字符。mput 命令会分别复制每个文件,并且每次都要求您进行确认。
要关闭 ftp 连接,请键入 bye。
ftp> bye |
在此示例中,用户 kryten 将打开与系统 pluto 的 ftp 连接,并使用 put 命令将其系统中的文件复制到系统 pluto 上的 /tmp 目录。
$ cd /tmp ftp pluto Connected to pluto. 220 pluto FTP server (SunOS 5.8) ready. Name (pluto:kryten): kryten 331 Password required for kryten. Password: xxx 230 User kryten logged in. ftp> cd /tmp 250 CWD command successful. ftp> put filef 200 PORT command successful. 150 ASCII data connection for filef (129.152.221.238,34356). 226 Transfer complete. ftp> ls 200 PORT command successful. 150 ASCII data connection for /bin/ls (129.152.221.238,34357) (0 bytes). dtdbcache_:0 filea filef files ps_data speckeysd.lock 226 ASCII Transfer complete. 60 bytes received in 0.058 seconds (1.01 Kbytes/s) ftp> bye 221 Goodbye. |
在此示例中,同一用户 kryten 使用 mput 命令将其起始目录中的一组文件复制到 pluto 的 /tmp 目录。请注意,kryten 可以接受或拒绝该文件组中的个别文件。
$ cd $HOME/testdir $ ls test1 test2 test3 $ ftp pluto Connected to pluto. 220 pluto FTP server (SunOS 5.8) ready. Name (pluto:kryten): kryten 331 Password required for kryten. Password: xxx 230 User kryten logged in. ftp> cd /tmp 250 CWD command successful. ftp> mput test* mput test1? y 200 PORT command successful. 150 ASCII data connection for test1 (129.152.221.238,34365). 226 Transfer complete. mput test2? y 200 PORT command successful. 150 ASCII data connection for test2 (129.152.221.238,34366). 226 Transfer complete. mput test3? y 200 PORT command successful. 150 ASCII data connection for filef (129.152.221.238,34356). 226 Transfer complete. ftp> bye 221 Goodbye. |
rcp 命令可在本地系统与远程系统或两个远程系统之间复制文件或目录。您可从远程系统使用此命令(使用 rlogin 命令登录后),也可从本地系统(在未登录到远程系统的情况下)使用此命令。
将您系统中的文件或目录复制到远程系统
将远程系统中的文件或目录复制到本地系统
从本地系统在远程系统间复制文件或目录
如果正在运行自动挂载程序,则可以使用 cp 命令来执行这些远程操作。但是,cp 只能应用于自动挂载程序创建的虚拟文件系统以及与用户起始目录有关的操作。由于 rcp 可以执行同样的操作而没有这些约束,因此本节仅介绍如何使用 rcp 来完成这些任务。
cp 和 rcp 命令都可以覆写文件而不发出任何警告。执行该命令之前,请确保文件名正确。
借助 C shell 中的 rcp 命令,可使用绝对或缩写路径名指定源(要复制的文件或目录)和目标(将文件或目录复制到的位置)。
|
绝对路径名 |
缩写路径名 |
---|---|---|
从本地系统 |
mars:/home/jones/myfile.txt |
~jones/myfile.txt |
在远程登录后 |
/home/jones/myfile.txt |
~jones/myfile.txt |
绝对路径名可标识特定系统上挂载的文件或目录。在前面的示例中,第一个绝对路径名标识 mars 系统上的文件 (MyFile.txt)。缩写路径名标识相对于用户起始目录的文件或目录,而不管起始目录的驻留位置如何。在前面的第一个示例中,缩写路径名标识的是同一个 MyFile.txt 文件,只不过使用 "~" 符号来表示 jones 起始目录:
~ = mars:/home/jones
第二行中的示例向用户演示远程登录后的绝对路径名和缩写路径名。缩写路径名的差别并不明显。不过,由于远程登录操作将 jones 起始目录挂载到本地系统上(相当于本地用户的起始目录),因此绝对路径名不再需要指明系统名 mars。有关远程登录操作如何挂载其他用户的起始目录的更多信息,请参见远程登录后发生的情况。
下表提供了 C shell 识别的绝对路径名和缩写路径名的样例。该样例使用的术语如下:
表 29–4 允许使用的目录和文件名语法
登录到 |
语法 |
说明 |
---|---|---|
本地系统 |
. |
本地工作目录 |
|
path/filename |
本地工作目录中的path 和 filename |
|
~ |
当前用户的起始目录 |
|
~/path/filename |
当前用户起始目录下的 path 和 filename |
|
~user |
user 的起始目录 |
|
~user/path/filename |
user 起始目录下的 path 和 filename |
|
remote-system:path/filename |
远程工作目录中的 path 和 filename |
远程系统 |
. |
远程工作目录 |
|
filename |
远程工作目录中的 filename |
|
path/filename |
远程工作目录中的 path 和 filename |
|
~ |
当前用户的起始目录 |
|
~/path/filename |
当前用户起始目录中的 path 和 filename |
|
~user |
user 的起始目录 |
|
~/user/path/filename |
user 起始目录下的 path 和 filename |
|
local-system:path/filename |
本地工作目录中的path 和 filename |
您至少应在源系统上具有读取权限,在目标系统上具有写入权限。
确定源和目标的位置。
如果不知道源或目标的路径,可以先按如何登录到远程系统 (rlogin)中所述使用 rlogin 命令登录到远程系统。然后,浏览远程系统直到找到该位置。从而,可在未注销的情况下执行下一步。
复制文件或目录。
$ rcp [-r] source-file|directory target-file|directory |
(无选项)将源中的单个文件复制到目标。
将源中的目录复制到目标。
无论您登录到远程系统还是登录到本地系统,此语法都适用。只是文件或目录的路径名要进行相应更改,如表 29–4 及以下样例所示。
您可使用 "~" 和 "." 字符来指定本地文件或目录名称的路径部分。但是请注意,"~" 适用于当前用户而不适用于远程系统,"." 适用于所登录到的系统。有关这些符号的说明,请参见表 29–4。
在此示例中,rcp 用于将远程系统 pluto 的 /home/jones 目录中的文件 letter.doc 复制到本地系统 earth 上的工作目录 (/home/smith):
earth(/home/smith): rcp pluto:/home/jones/letter.doc . |
在此情况下,rcp 操作是在未远程登录的情况下执行的。此处,命令行结尾的 "." 符号表示本地系统而非远程系统。
目标目录也是本地用户的起始目录,因此还可使用 "~" 符号来指定它。
在此示例中,rcp 操作在执行 rlogin 命令之后运行,以将远程系统中的文件复制到本地系统。尽管该操作的流程与前一示例的流程相同,但已针对远程登录更改了路径:
earth(/home/smith): rlogin pluto . . . pluto(/home/jones): rcp letter.doc ~ |
在此情况下,不适合在命令行结尾使用 "." 符号。由于远程登录,因此该符号仅表示远程系统-实质上指示 rcp 创建重复文件。但是,"~" 符号表示当前用户的起始目录,即使登录远程系统也是如此。
在此示例中,rcp 用于将本地系统 earth 的起始目录 (/home/smith) 中的文件 notice.doc 复制到远程系统 pluto 的 /home/jones 目录:
earth(/home/smith): rcp notice.doc pluto:/home/jones |
由于未提供远程文件名,因此文件 notice.doc 将以相同名称复制到 /home/jones 目录。
在下述情况下,将重复执行前面示例中的 rcp 操作,但 rcp 是从本地系统上的另一工作目录 (/tmp) 输入的。请注意,"~" 符号用于表示当前用户的起始目录:
earth(/tmp): rcp ~/notice.doc pluto:/home/jones |
在此示例中,rcp 操作在执行 rlogin 命令之后运行,以将本地文件复制到远程目录。尽管该操作的流程与先前示例的流程相同,但路径已经针对远程登录进行了更改。
earth(/home/smith): rlogin pluto . . . pluto(/home/jones): rcp ~/notice.doc . |
在此情况下,"~" 符号可用来指示当前用户的起始目录,即使该目录位于本地系统上。由于用户已登录到远程系统,因此 "." 符号表示远程系统上的工作目录。以下是可执行相同操作的替换语法:
pluto(/home/jones): rcp earth:/home/smith/notice.doc /home/jones |