手册页部分 1: 用户命令

退出打印视图

更新时间: 2014 年 7 月
 
 

rcp(1)

名称

rcp - 远程文件复制

用法概要

rcp [-p] [-a] [-K] [-x] [-PN | -PO] [-k realm] filename1 filename2
rcp [-pr] [-a] [-K] [-x] [-PN | -PO] [-k realm] filename... directory

描述

rcp 命令会在计算机之间复制文件。每个 filenamedirectory 参数可以是以下形式的远程文件名:

hostname:path

也可以是本地文件名(不含 :(冒号)字符,或任何 :(冒号)字符前不含 /(反斜杠))。

hostname 可以是一个 IPv4 或 IPv6 地址字符串。请参见 inet(7P)inet6(7P)。由于 IPv6 地址已经包含冒号,因此,使用 IPv6 地址时,hostname 应括在一对方括号中。否则,第一个冒号会解释为 hostnamepath 之间的分隔符。例如,

[1080::8:800:200C:417A]:tmp/file

如果 filename 不是全路径名,则会将其解释为相对于 hostname 上的起始目录的路径名。远程主机上的 path 可使用 \ " '  引起,以便能够远程解释元字符。请注意,Kerberos 版本的 rcp 不支持 IPv6。

rcp 不会提示用户输入口令。它会使用通过命令行选项启用的 Kerberos 验证,或者您的当前本地用户名必须存在于 hostname 中并允许 rsh(1) 执行远程命令。

rcp 会话可使用以下 Kerberos 特定选项来执行 Kerberos 验证:–a–PN–PO–x 以及 –k realm。上述部分选项(–a–x–PN–PO)也可以在 krb5.conf(4)[appdefaults] 部分中指定。这些选项的用法及其预期行为将在下面的“选项”部分中讨论。使用 Kerberos 验证时,帐户授权将由 krb5_auth_rules(5) 中的规则控制。如果此授权失败,则仅当在命令行上显式使用 –PO 选项,或者在 krb5.conf(4) 中指定了该选项时,才会出现使用 rhosts 回退到常规 rcp 这一情况。如果授权成功,则会成功执行远程复制,且系统不会提示用户输入口令。另请注意,–PN–PO–x 以及 –k realm 选项只是 –a 选项的超集。

rcp 可以处理源和目标文件均不在当前计算机上的第三方副本。主机名也可以采用以下形式

username@hostname:filename

以便使用 username(而非当前本地用户名)作为远程主机上的用户名。rcp 还支持远程主机的 Internet 域寻址,因此:

username@host.domain:filename

会指定要使用的用户名、主机名以及主机驻留的域。使用并非全路径名的文件名时,系统会将其解释为与远程主机上名为 username 的用户的起始目录相对的文件名。

选项

支持以下选项:

–a

此选项会显式启用 Kerberos 验证,并信任用于访问控制的 .k5login 文件。如果服务器端的 in.rshd(1M) 成功执行了授权检查,且 .k5login 文件允许访问,则允许用户执行 rcp 传输。

–k realm

促使 rcp 获取 realm(而非 krb5.conf(4) 确定的远程主机领域)中的远程主机的票证。

–K realm

此选项会显式禁用 Kerberos 验证。它可用来覆盖 krb5.conf(4) 中的 autologin 变量。

–p

尝试为每个副本提供与原始文件相同的修改时间、访问时间、模式以及 ACL(如适用)。

–PO
–PN

显式请求新版 (–PN) 或旧版 (–PO) Kerberos “rcmd” 协议。新协议避免了旧协议中常见的许多安全问题,安全性大幅提升,但它无法与早期的 (MIT/SEAM) 服务器互操作。缺省情况下会使用新协议,除非使用这些选项或通过 krb5.conf(4) 进行了显式指定。使用旧 “rcmd” 协议时,如果 Kerberos 验证失败,系统会回退到常规的非 Kerberos rcp。使用更安全的新 “rcmd” 协议时,则不会发生这种情况。

–r

复制根目录位于 filename 的每个子树;此时,目标必须是一个目录。

–x

使系统对主机之间传输的信息进行加密。请注意,命令会以未加密的形式发送至远程系统。所有后续传输都会进行加密。

用法

有关 rcp 遇到大于或等于 2 GB(231 字节)文件时行为的说明,请参见 largefile(5)

rcp 命令支持 IPv6。请参见 ip6(7P)。Kerberos V5 验证目前不支持 IPv6

对于 Kerberos rcp 会话,每个用户都可在其起始目录中的 .k5login 文件中拥有一个专用验证列表。此文件中的每一行均应包含一个 principal/instance @realm 格式的 Kerberos 主体名称。如果存在一个 ~/.k5login 文件,则当且仅当发起方用户通过了 ~/.k5login 文件中所指定的某个主体的验证时,才会授予其对该帐户的访问权限。否则,当且仅当用户的已验证主体名称可以使用 authenticated-principal-namelocal-user-name 映射规则映射至本地帐户名称时,才会授予发起方用户对该帐户的访问权限。.k5login 文件(用于访问控制)在 Kerberos 验证完成后才生效。

退出状态

将返回以下退出值:

0

所有文件都已成功复制。

>0

出现错误。

请参见“附注”部分了解有关退出代码的警告。

文件

$HOME/.profile

$HOME/.k5login

包含允许访问的 Kerberos 主体的文件

/etc/krb5/krb5.conf

Kerberos 配置文件

属性

有关下列属性的说明,请参见 attributes(5)

属性类型
属性值
可用性
service/network/network-clients
CSI
Enabled(已启用)

另请参见

cpio(1)ftp(1)rlogin(1)rsh(1)setfacl(1)tar(1)tar(1)in.rshd(1M)hosts.equiv(4)krb5.conf(4)attributes(5)largefile(5)krb5_auth_rules(5)inet(7P)inet6(7P)ip6(7P)

附注

rcp 用来在不同主机之间进行复制。按照以下方式使用 rcp 尝试将一个文件复制到其自身时:

example% rcp tmp/file myhost:/tmp/file

会导致文件严重损坏。

复制目标为文件而不是目录时,rcp 可能会出现异常故障。

使用远程主机 $HOME/.profile 内的命令生成的输出时,rcp 可能会出现混乱。

处理第三方副本时,rcp 要求源主机具备在远程主机上执行命令的权限。

rcp 无法正确处理符号链接。请使用通过管道传输到 rshtarcpio 来获取包含符号链接或命名管道的目录的远程副本。请参见 tar(1)cpio(1)

如果忘记使用引号将用于远程主机的元字符引起,则会收到无法理解的错误消息。

将 ACL 复制到不支持 ACL 的文件系统时,rcp 会失败。

rcp 支持 CSI,但处理用户名、主机名和域时除外。

使用 rcp 处理第三方副本时,如果任一台远程计算机未运行 Solaris,则退出代码不可依赖。也就是说,退出代码表明操作成功执行时实际上可能发生了错误,或者虽然退出代码表明发生了错误,但复制可能已经彻底成功完成。