本节提供了在 Solaris 环境中管理 FTP 服务器和访问远程系统的说明。
本节包括有关使用远程文件的信息。
FTP 服务器基于 wu-ftpd。wu-ftpd 最初由位于圣路易斯的华盛顿大学开发,广泛用于互联网上批量数据的分发,它是大型 FTP 站点的首选标准。有关许可条款的信息,请参阅以下位置的相关资料:/var/sadm/pkg/SUNWftpu/install/copyright。
在本章中,远程系统是指通过任何类型的物理网络连接到本地系统并且配置为进行 TCP/IP 通信的工作站或服务器。
在运行 Solaris 发行版的系统上,TCP/IP 配置在启动时自动建立。有关更多信息,请参见《系统管理指南:IP 服务》。
Solaris 10 发行版包括一些对 FTP 服务的更改。这些更改包括对 FTP 服务器的增强以及对 ftpcount、ftpwho 和 ftp 命令的更改。
FTP 服务器的增强功能可提高可伸缩性,并改进日志传送功能。这些选项将在繁忙站点的配置帮助和 ftpaccess(4) 手册页中介绍。具体而言:
sendfile() 功能用于二进制下载
ftpaccess 文件中支持的新功能
flush-wait 控制下载或目录列表结束时的行为
ipcos 为控制或数据连接设置 IP 服务类
可以对passive ports 进行配置,这样内核便可选择要侦听的 TCP 端口。
quota-info 启用了对配额信息的检索。
recvbuf 设置用于二进制传送的接收(上载)缓冲区大小
rhostlookup 允许或禁止远程主机名的查找
sendbuf 设置用于二进制传送的发送(下载)缓冲区大小
xferlog 格式自定义传送日志项的格式
-4 选项使得 FTP 服务器以单机模式运行时仅侦听 IPv4 套接字上的连接
此外,ftpcount 和 ftpwho 现在支持 -v 选项,此选项将显示在虚拟主机 ftpaccess 文件中定义的 FTP 服务器类的用户计数和进程信息。有关更多信息,请参见 ftpcount(1) 和 ftpwho(1) 手册页。
FTP 客户机和服务器现在支持 Kerberos。有关更多信息,请参阅 ftp(4) 手册页和《System Administration Guide: Security Services》中的《系统管理指南:安全性服务》中的“Kerberos 用户命令”。
ftp 命令已更改。缺省情况下,在对连接到 Solaris FTP 服务器的 Solaris FTP 客户机发出 ls 命令时,该客户机将列出目录和纯文本文件。如果 FTP 服务器未在 Solaris OS 中运行,则可能不会列出目录。要在连接到非 Solaris FTP 服务器时执行缺省 Solaris 行为,可在每台 Solaris 客户机上相应地编辑 /etc/default/ftp 文件。要对单个用户进行更改,可将 FTP_LS_SENDS_NLST 环境变量设置为 yes。有关更多信息,请参见 ftp(4) 手册页。
ftpd 守护进程由服务管理工具管理。 可使用 svcadm 命令对此服务执行管理操作,如启用、禁用或重新启动。可使用 svcs 命令来查询此服务对应所有守护进程的状态。有关服务管理工具的概述,请参阅《System Administration Guide: Basic Administration》中的《系统管理指南:基本管理》中的第 14 章 “管理服务(概述)”。
Solaris 9 发行版对 FTP 服务器作了大量更改,所以 Solaris 10 发行版中保留了本节。此 FTP 服务器与 Solaris 8 FTP 软件兼容,但为 Solaris 9 用户提供了改进了性能的新功能。
表 27–1 Solaris 9 FTP 服务器的新增功能
功能 |
说明 |
参考 |
---|---|---|
按类型和位置进行的用户分类 |
允许您根据类型和地址定义用户类 | |
对每个类的限制 |
根据在 ftpaccess 文件中设置的限制,控制允许同时登录的某类用户的数量。 | |
系统范围的和与目录相关的消息 |
显示为特定事件指定的消息 | |
每个目录的上载权限 |
允许您控制到 FTP 服务器的上载,包括文件和目录创建及权限。 | |
文件名过滤器 |
允许您指定上载文件的名称中的可接受字符以及顺序。 | |
虚拟主机支持 |
允许您将 FTP 服务器配置为在一台计算机上支持多个域 | |
命令日志记录 |
允许对由实际用户、临时用户和匿名 FTP 用户执行的命令记录日志 | |
传送日志记录 |
允许对实际用户、临时用户和匿名 FTP 用户的传送记录日志 | |
按需压缩并归档 |
允许使用 ftpconversions 文件中指定的转换来根据需要进行压缩和归档 |
以下列表给出了更高发行版中不支持的 Solaris 8 功能。
更高发行版中不支持 Solaris 8 /etc/default/ftpd。在升级期间,BANNER 和 UMASK 项将转换为它们的 wu-ftpd 等效项。但是,系统管理员可能需要手动转换某些 BANNER 行才能获得等效的 ftpaccess 问候功能。有关详细信息,请参见 ftpaccess(4)。
Solaris 9 FTP 服务器不支持 Solaris 8 FTP 服务器提供的 sublogin 功能。
本章包括下表中说明的设置和管理 FTP 服务器的任务。
任务 |
说明 |
参考 |
---|---|---|
配置对 FTP 服务器的访问 |
使用 /etc/ftpd 目录中的 ftpaccess、ftpusers 和 ftphosts 文件可建立或限制对 FTP 服务器的访问。 | |
设置 FTP 服务器登录帐户 |
为实际用户、临时用户和匿名用户建立登录帐户。 | |
自定义消息文件 |
编辑 /etc/ftpd/ftpaccess 文件以配置 FTP 服务器,使其将消息返回到与特定事件相关的 FTP 客户机。 | |
配置对 FTP 服务器上文件的访问 |
使用 /etc/ftpd/ftpaccess 文件可指定用户类,允许该类用户执行某些命令或者从 FTP 服务器下载文件以及将文件上载到该服务器。 | |
启用有限或完整虚拟主机托管 |
使用 /etc/ftpd/ftpaccess 文件可配置 FTP 服务器,使其支持同一计算机上的多个域。 | |
启动 FTP 服务器 |
更改服务属性以在 nowait 模式、单机模式或前台模式下启动 FTP 服务器。 | |
关闭 FTP 服务器 |
使用 /etc/ftpd/ftpaccess 文件并运行 ftpshut 可关闭 FTP 服务器。 | |
对常见 FTP 服务器问题进行疑难解答 |
选中 syslogd 并使用 greeting text 和 log commands 可调试 FTP 服务器上的问题。 |
可以使用 /etc/ftpd 目录中的以下配置文件控制对 FTP 服务器的访问。
ftpusers 用于列出被拒绝访问 FTP 服务器的用户。
ftphosts 用于允许或拒绝从各种主机登录到 FTP 服务器上的各种帐户。
ftpaccess 是主 FTP 配置文件。只有使用 -a 选项调用 /etc/ftpd/ftpaccess,FTP 服务器才会读取该文件。使用 ftpaccess 文件时,所有用户必须为允许访问 FTP 服务器的某类的成员。您可以指定仅应用于特定类的许多 ftpaccess 指令。
有关详细信息,请参见 ftpusers(4)、ftphosts(4) 和 ftpaccess(4)。
在所有 FTP 服务器配置文件中,以 # 号开头的行被认为是注释。
要登录到 FTP 服务器,用户在使用 ftpaccess 文件时必须是某类的成员。要将 class 指令添加到 ftpaccess 文件中,应指定允许通过特定主机进行访问的用户的 class 名称和 typelist。
成为超级用户或承担等效角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2 章 “使用 Solaris Management Console(任务)”。
在 ftpaccess 文件中为匿名用户、临时用户和实际用户添加项。
class class typelist addrglob[addrglob...] |
用于定义 FTP 用户的关键字。
由 class 关键字定义的名称。每次登录会与所定义类的列表进行比较。已登录的用户将视为匹配的第一个类的成员。
与三类用户(anonymous、guest 和 real)匹配的、用逗号分隔的关键字列表:
域名簇或数字地址簇。addrglob 也可以是包含其他地址簇、以斜杠 (`/`) 开头的文件名:address:netmask 或 address/cidr。
以下是一些地址簇示例:
数字 IPv4 地址: 10.1.2.3
域名簇 *.provider.com
数字 IPv4 地址簇 10.1.2.*
数字 IPv4 地址:网络掩码 10.1.2.0:255.255.255.0
数字 IPv4 地址/CIDR 10.1.2.0/24
数字 IPv6 地址: 2000::56:789:21ff:fe8f:ba98
数字 IPv6 地址/CIDR:2000::56:789:21ff:fe8f:ba98/120
class local real,guest,anonymous *.provider.com class remote real,guest,anonymous * |
上一示例将 local 类定义为从 *.provider.com 登录的 real、guest 或 anonymous 类型的任何用户。最后一行将 remote 定义为从除 *.provider.com 之外的任何位置登录的任何用户。
您可以使用 ftpaccess 文件中设置的指令限制同时登录的某类用户的数量。每个登录限制包含类名、UUCP 样式的周日期列表和超出限制时将显示的消息文件。
要设置用户登录限制,请使用以下过程中的步骤。
成为超级用户或承担等效角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2 章 “使用 Solaris Management Console(任务)”。
将以下项添加到 ftpaccess 文件中:
limit class n times [message_file] |
用于限制同时登录的关键字,即对属于某个已定义类的指定数目的用户在特定连接时段的同时登录进行限制。
由 class 关键字定义的名称。每次登录会与所定义类的列表进行比较。已登录的用户将视为匹配的第一个类的成员。
用户数。
可以连接相应类的周日期和时间。用 Any 表示任何日期。
如果用户被拒绝访问将显示的消息文件。
limit anon 50 Wk0800-1800 /etc/ftpd/ftpmsg.deny limit anon 100 Any /etc/ftpd/ftpmsg.deny limit guest 100 Any /etc/ftpd/ftpmsg.deny |
上面示例中的第一行显示,在每周的工作时间内,允许同时登录的 anon 类用户不能超过 50 个。第二行将工作时间之外可同时登录的 anon 用户限制为 100 个。最后一行显示,在任何时间,允许同时登录的 guest 用户不能超过 100 个。有关如何指定日期和时间参数的信息,请参见 ftpaccess(4)。
该示例还说明,达到指定的登录限制时,将返回 /etc/ftpd/ftpmsg.deny 文件的内容(假设 ftpmsg.deny 存在)。有关使用 /usr/sbin/ftpcount 命令查看在特定时间登录的每类用户的数量和登录限制的信息,请参见 ftpcount(1)。
除非达到了指定的限制,否则将允许用户登录到 FTP 服务器。匿名用户以用户 ftp 的身份登录。 实际用户以真实身份登录;临时用户以实际用户身份登录,但其访问权限受 chroot 环境限制。
有关使用 /usr/sbin/ftpwho 命令检查登录到 FTP 服务器的用户的身份的信息,请参见 ftpwho(1)。
如果因为出现问题(如需要的信息拼写错误)导致登录到 FTP 服务器失败,则通常会重复登录。在将消息记录到 syslog 文件之前,允许用户连续尝试登录特定的次数。然后,将断开用户的连接。通过执行以下过程中的步骤,可对登录尝试失败的次数设置限制。
成为超级用户或承担等效角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2 章 “使用 Solaris Management Console(任务)”。
将以下项添加到 ftpaccess 文件中。
loginfails n |
用于指定在终止 FTP 连接之前,允许登录失败的次数的关键字。
登录可以失败的次数
loginfails 10 |
上面的示例说明,在尝试登录失败 10 次后,将会断开用户与 FTP 服务器的连接。
/etc/ftpd/ftpusers 文件列出了不允许登录到 FTP 服务器的用户名。尝试登录时,FTP 服务器将会检查 /etc/ftpd/ftpusers 文件,以确定是否拒绝该用户访问。如果在该文件中未找到该用户名,服务器将会在 /etc/ftpusers 文件中搜索。
如果 /etc/ftpusers 中存在匹配的用户名,则会写入一条 syslogd 消息,声明在过时的文件中找到匹配。该消息还建议使用 /etc/ftpd/ftpusers,而不要使用 /etc/ftpusers。
此发行版不再支持 /etc/ftpusers 文件。如果安装 FTP 服务器时存在 /etc/ftpusers 文件,则会将该文件移到 /etc/ftpd/ftpusers 中。
有关其他信息,请参见 syslogd(1M)、in.ftpd(1M) 和 ftpusers(4)。
成为超级用户或承担等效角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2 章 “使用 Solaris Management Console(任务)”。
将不允许登录到 FTP 服务器的用户的项添加到 /etc/ftpd/ftpusers 文件中。
root daemon bin sys adm lp uccp nuucp listen nobody noaccess nobody4 |
上面的示例列出了 ftpusers 文件中的典型项。用户名与 /etc/passwd 中的项匹配。该列表通常包括 root 及其他管理和系统应用程序标识。
作为安全措施,根项包括在 ftpusers 文件中。缺省安全策略是禁止 root 的远程登录。对于 /etc/default/loginfile 中设置为 CONSOLE 项的缺省值,也遵守该策略。请参见 login(1)。
除了上面提到的控制方法,还可以向 ftpaccess 文件中添加显式声明来限制对 FTP 服务器的访问。
成为超级用户或承担等效角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2 章 “使用 Solaris Management Console(任务)”。
将以下项添加到 ftpaccess 文件中。
缺省情况下,允许所有用户访问缺省(非虚拟)FTP 服务器。要拒绝特定用户(anonymous 用户之外的用户)的访问,请添加以下项:
defaultserver deny username [username...] |
用于标识拒绝或允许对其进行访问的非虚拟服务器的关键字
拥有对 defaultserver 的受限制访问权限的用户的登录名
要允许 deny 行中未列出的用户的访问,请添加以下行:
defaultserver allow username [username...] |
要阻止匿名用户的访问,请添加以下项:
defaultserver private |
defaultserver deny * defaultserver allow username |
上面的示例说明,FTP 服务器拒绝除 anon 用户和 allow 行中列出的那些用户之外的所有用户的访问。
也可以使用 ftphosts 文件拒绝来自各种主机对特定登录帐户的访问。有关其他信息,请参见 ftphosts(4)。
要访问 FTP 服务器,必须先登录。FTP 服务器支持三种类型的用户登录帐户,它们分别是实际用户、临时用户和匿名用户。
实际用户具有允许他们在运行 FTP 服务器的系统上建立终端会话的帐户。整个磁盘结构对实际用户是否可见取决于目录和文件访问权限。
临时用户也需要帐户来登录到 FTP 服务器。可以使用用户名和口令设置每个临时用户帐户。为了防止临时用户建立终端会话,将不会为该类用户指定功能登录 shell。登录时,FTP 服务器执行 chroot(2) 操作以限制临时用户查看服务器的磁盘结构。
要允许实际用户和临时用户访问 FTP 服务器,必须在 /etc/shells 文件中列出他们的登录 shell。
匿名用户通过使用 ftp 或 anonymous 作为用户名来登录到 FTP 服务器。根据约定,在系统提示输入口令时,匿名用户提供电子邮件地址。
登录时,FTP 服务器执行 chroot(2) 操作以限制匿名用户查看服务器的磁盘结构。与可以为每个临时用户创建独立的区域不同,所有匿名用户共享一个文件区域。
实际用户和临时用户使用包含口令(仅一个人知道)的各个帐户登录。匿名用户登录到可能对所有用户可用的已知帐户。大多数大规模文件分发是通过使用匿名帐户创建的。
验证用户是否具有使用用户名和口令设置的可用于建立终端会话的帐户。
有关更多信息,请参见《系统管理指南:基本管理》中的第 4 章 “管理用户帐户和组(概述)”。
确认该实际用户是否是 ftpaccess 文件中某类的成员。
有关 ftpaccess 文件中定义的用户类的信息,请参见如何定义 FTP 服务器类。
验证 /etc/shells 文件中是否列出了用户的登录 shell。
ftpconfig 脚本用于将所有需要的系统文件复制到起始目录中。如果临时用户和临时用户的起始目录已存在,则 ftpconfig 脚本将会使用当前的系统文件更新该区域。
有关更多信息,请参见 ftpconfig(1M)。
与为匿名用户设置的用户名(anonymous 或 ftp)不同,FTP 临时用户的用户名不是固定的。可以选择将任何名称作为实际用户名。
要使临时用户可以访问 FTP 服务器,请执行以下操作:
使用 useradd 脚本创建包含登录 shell /bin/true 和起始目录 /root_dir/./home_dir 的临时用户帐户。
有关更多信息,请参见 useradd(1M) 和《系统管理指南:基本管理》中的第 4 章 “管理用户帐户和组(概述)”。
在此过程中,/home/guests/./guest1 用作名为 guest1 的用户的起始目录名称。
# /usr/sbin/useradd -m -c "Guest FTP" -d \ /home/guests/./guest1 -s /bin/true guest1 |
为临时帐户指定口令。
将 guestuser 项添加到 ftpaccess 文件中。
guestuser guest1 |
也可以使用 ftpaccess 文件中的 guestgroup 功能指定临时用户。ftpaccess 中的 guest-root 功能无需指定临时用户的起始目录路径中的 /./。
确认该临时用户是否是 ftpaccess 文件中某个 class 的成员。有关详细信息,请参见如何定义 FTP 服务器类。
使用 ftpconfig 脚本在 chroot 区域中创建需要的文件。
/usr/sbin/ftpconfig -d /home/guests |
确认 /bin/true 是否列在 /etc/shells 文件中。请参见如何创建 /etc/shells 文件。
在此示例中,将在 /home/guests 目录中设置 FTP 区域。
# /usr/sbin/ftpconfig -d /home/guests Updating directory /home/guests |
ftpconfig 脚本创建 anonymous 用户帐户并使用需要的文件填充起始目录。
有关更多信息,请参见 ftpconfig(1M)。
要使匿名用户可以访问 FTP 服务器,请按照以下说明操作:
使用 ftpconfig 脚本创建匿名用户帐户。
/usr/sbin/ftpconfig anonymous-ftp-directory |
确认是否在 ftpaccess 文件的某个 class 中指定了该匿名用户。
有关详细信息,请参见如何定义 FTP 服务器类。
在此示例中,将在 /home/ftp 目录中设置 FTP 区域。
# /usr/sbin/ftpconfig /home/ftp Creating user ftp Updating directory /home/ftp |
成为超级用户或承担等效角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2 章 “使用 Solaris Management Console(任务)”。
创建 /etc/shells 文件。
编辑 /etc/shells。添加每个 shell 的全路径,一个路径占一行。
以下是 /etc/shells 文件的一个示例,其中列出了 FTP 临时用户的 /bin/true:
/sbin/sh /bin/csh /bin/jsh /bin/ksh /bin/remsh /bin/rksh /bin/rsh /bin/sh /usr/bin/csh /usr/bin/ksh /usr/bin/bash /usr/bin/tcsh /usr/bin/zsh /bin/true |
可以配置 FTP 服务器,使其将与特定事件有关的消息返回到 FTP 客户机。可以设置当用户登录到 FTP 服务器时显示欢迎消息。可以在用户更改目录时显示另外一条消息。
除了纯文本外,消息文件还可以包含一个或多个魔饼。魔饼由 %(百分号)后接单个字符构成。如果在消息文本中嵌入 cookie,则当调用该消息文件时,将会在屏幕上显示与该 cookie 关联的信息。
例如,消息文本可能包含 cookie %L:
Welcome to %L! |
显示消息时,魔饼 %L 将替换为由 ftpaccess 文件中的 hostname 语句定义的服务器的名称。有关支持的消息 cookie 的完整列表,请参见 ftpaccess(4)。
如果 ftpaccess 文件中未定义主机名,则将使用本地计算机的缺省主机名。
成为超级用户或承担等效角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2 章 “使用 Solaris Management Console(任务)”。
根据需要,编辑消息文件以包括魔饼。
有关可以使用的 cookie 的列表,请参见 ftpaccess(4)。
以下是包括魔饼的消息文件的示例:
Welcome to %L -- local time is %T. You are number %N out of a maximum of %M. All transfers are logged. If your FTP client crashes or hangs shortly after login please try using a dash (-) as the first character of your password. This will turn off the informational messages that may be confusing your FTP client. Please send any comments to %E. |
用户登录后,屏幕上将显示与系统相关或与应用程序相关的消息。ftpaccess 文件列出了触发关联的 message 语句的事件。
成为超级用户或承担等效角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2 章 “使用 Solaris Management Console(任务)”。
将以下项添加到 ftpaccess 文件中:
message message_file [when [class ...]] |
该关键字用于指定当用户登录或执行命令以更改工作目录时,将显示的消息文件。
要显示的消息文件的名称。
设置为 login 或 cwd=dir 的参数。请参见以下示例。
class 规范允许仅向特定类的成员显示消息。
message /etc/ftpd/Welcome login anon guest message .message cwd=* |
上面的示例说明,anon 或 guest 类的用户登录时将显示 /etc/ftpd/Welcome 文件。第二行说明,将对所有用户显示当前工作目录中的 .message 文件。
对于临时用户和匿名用户,将创建相对于 chroot 目录的消息文件。
首次访问目录时,可能会列出 README 文件。要配置 README 选项,请将以下项添加到 ftpaccess 文件中。
成为超级用户或承担等效角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2 章 “使用 Solaris Management Console(任务)”。
将以下项添加到 ftpaccess 文件中。
readme message_file [when [class...]] |
该关键字用于指定当用户登录或更改工作目录时,将检查的消息文件。如果该消息文件存在,则将通知用户,并指出文件被修改的日期。
要检查的消息文件的名称。
设置为 login 或 cwd=dir 的参数。请参见以下示例。
class 规范允许仅向特定类的成员显示消息。
greeting 和 banner 关键字也可用于向用户发送消息。请参见 ftpaccess(4)。
readme README* login readme README* cwd=* |
上面的示例说明,登录或更改目录时将列出与 README* 匹配的所有文件。以下是基于上面示例中使用的设置的登录示例。
% ftp earth Connected to earth. 220 earth FTP server ready. Name (earth:rimmer): ftp 331 Guest login ok, send your complete e-mail address as password. Password: 230- 230-Welcome to earth -- local time is Thu Jul 15 16:13:24 1999. 230- 230-You are number 1 out of a maximum of 10. 230-All transfers are logged. 230- 230-If your FTP client crashes or hangs shortly after login please try 230-using a dash (-) as the first character of your password. This will 230-turn off the informational messages that may be confusing your FTP 230-client. 230- 230-Please send any comments to ftpadmin@earth. 230- 230 Guest login ok, access restrictions apply. ftp> cd pub 250-Please read the file README 250- it was last modified on Thu Jul 15 16:12:25 1999 - 0 days ago 250 CWD command successful. ftp> get README /tmp/README 200 PORT command successful. 150 Opening ASCII mode data connection for README (0 bytes). 226 ASCII Transfer complete. ftp> quit 221 Goodbye. |
本节中的 FTP 服务器访问控制是 Solaris 发行版中可用的标准文件和目录访问控制的补充。使用标准 Solaris 命令可限制能够访问、更改或上载文件的用户。请参见 chmod(1)、chown(1) 和 chgrp(1)。
要使用 ftpaccess 中的权限功能指定哪种类型的用户允许执行哪些命令,请执行以下操作:
成为超级用户或承担等效角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2 章 “使用 Solaris Management Console(任务)”。
将以下项添加到 ftpaccess 中:
command yes|no typelist |
chmod、delete、overwrite、rename 或 umask 等命令
允许或禁止用户发出命令
用逗号分隔的任何关键字(anonymous、guest 和 real)的列表
以下是对 FTP 服务器上的文件访问功能设置的权限示例。
chmod no anonymous, guest delete no anonymous overwrite no anonymous rename no anonymous umask no guest, anonymous |
上面的示例说明了以下内容:
不允许匿名用户删除、覆写或重命名文件。
禁止临时用户和匿名用户更改访问模式和重置 umask。
通过对 FTP 服务器上的目录设置权限,可以控制对 FTP 服务器执行的已启动的上载和下载操作。缺省情况下,不允许匿名用户上载。启用匿名上载时请务必小心。
向 ftpaccess 文件中添加指令以指定上载权限和上载失败的错误消息。
成为超级用户或承担等效角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2 章 “使用 Solaris Management Console(任务)”。
将以下项添加到 ftpaccess 文件中。
要使用户可以上载文件,请添加以下项:
upload [absolute|relative] [class=<classname>]... [-] root-dir \ dirglob yes|no owner group mode [dirs|nodirs] [<d_mode>] path-filter typelist mesg allowed_charset {disallowed regexp...} |
该关键字应用于起始目录(chroot() 的参数)为 root-dir 的用户。可以将 root-dir 指定为“*”以便与任何起始目录匹配。
该参数指定将 root-dir 目录路径解释为绝对路径还是相对于当前 chroot 目录的路径。
该关键字用于指定任何数量的 class=<classname> 限制。如果指定该限制,则仅在当前用户为指定的某个类的成员时,上载子句才有效。
匿名用户的用户根目录和起始目录。
与目录名称匹配的模式。可以在任何位置或单独使用星号来表示任何目录。
允许或禁止上载到 FTP 服务器的变量。
上载到 dirnames 中的文件的属主。
与上载到 dirnames 中的文件关联的组。
用于对已上载的文件指定访问权限的参数。缺省模式 0440 禁止匿名帐户读取已上载的文件。
该关键字允许或禁止用户在 dirnames 中列出的目录中创建子目录。
确定新创建目录的权限的可选模式。
控制已上载文件的名称的关键字。
用逗号分隔的任何关键字(anonymous、guest 和 real)的列表。
与 regexp 条件匹配失败时将显示的消息文件。
文件名称中允许或禁止使用的字母或数字。
upload /export/home/ftp /incoming yes ftpadm ftpadmin 0440 nodirs path-filter anonymous /etc/ftpd/filename.msg ^[-A-Za-z0-9._]*$ ^[.-] |
上面的示例说明了以下内容:
对 /export/home/ftp 使用 chroot 的 FTP 用户帐户可以上载到 /incoming 目录。已上载的文件为用户 ftpadm 和组 ftpadmin 拥有。使用 nodirs 关键字将模式设置为 0440 以阻止匿名用户创建子目录。
对于匿名用户,文件名可以是 A-Z、a-z、0-9、.(点)、-(破折号)或 _(下划线)的任意序列。文件名不能以 .(点)或 -(破折号)开头。如果文件名不能通过此过滤,则会显示消息 /etc/ftpd/filename.msg(如果 FTP 管理员已创建该消息文件)。此消息后接 FTP 服务器错误消息。
应对允许匿名上载到的目录的拥有权和权限进行严格控制。FTP 管理员应该是上载到 FTP 服务器的所有文件的属主。允许匿名用户上载文件时,需要创建 FTP 管理员。该目录应为权限设置为 3773 的用户 ftpadm 和组 ftpadm 拥有。
上载到 FTP 服务器的文件的访问模式应为 0440。0440 模式禁止匿名帐户读取已上载的文件。此限制可以防止服务器成为第三方文件分发的临时区域。
要使已上载的文件可以进行分发,FTP 管理员可以将这些文件移到公共目录中。
成为超级用户或承担等效角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2 章 “使用 Solaris Management Console(任务)”。
将以下项添加到 ftpaccess 文件中可阻止用户检索文件。
noretrieve [absolute|relative] [class=classname]... [-] filename ... |
用于拒绝检索特定文件的关键字
该参数指定将 root-dir 目录路径解释为绝对路径还是相对于当前 chroot 目录的路径
该关键字用于指定要应用 noretrieve 限制的用户的 class=<classname>
不允许用户检索的文件的名称
noretrieve /etc/passwd |
上面的示例说明,将禁止所有用户检索 /etc/passwd 文件。
虚拟主机托管允许 FTP 服务器支持同一计算机上的多个域。每个虚拟主机需要单独的逻辑接口和 IP 地址。
FTP 服务器支持两种类型的虚拟主机托管:有限和完整。使用有限虚拟主机托管时,将对所有虚拟主机使用相同的配置文件。使用完整虚拟主机托管时,将对每个虚拟主机使用单独的配置文件。
缺省情况下,不允许实际用户和临时用户登录到虚拟主机。您可以设置以下 ftpaccess 指令来覆盖缺省值。
To allow access to specific users: virtual address allow username To deny access to anonymous users: virtual address private username |
有关详细信息,请参见 ftpaccess(4)。
有限虚拟主机托管提供对虚拟 FTP 服务器的部分支持。可以通过指定虚拟根目录来启用对有限虚拟主机托管的支持。如果需要,也可以在 ftpaccess 文件中设置虚拟主机的以下参数:
banner
logfile
hostname
ftpaccess 文件中的所有指令在所有虚拟服务器中全局共享。
成为超级用户或承担等效角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2 章 “使用 Solaris Management Console(任务)”。
将以下项添加到 ftpaccess 文件中。
virtual address root|banner|logfile path virtual address hostname|email string |
用于启用虚拟服务器功能的关键字
虚拟服务器的 IP 地址
虚拟服务器的根目录
连接到虚拟服务器时将显示的标题文件
虚拟服务器上的文件传送记录
用于指定虚拟服务器上的目录和文件位置的变量
消息文件和 HELP 命令中使用的电子邮件地址
问候消息或状态命令中显示的主机的名称
用于指定 email 或 hostname 参数的变量
虽然可以使用 hostname 作为虚拟服务器的 address,但强烈建议您使用 IPv4 地址。为了匹配 hostname,接收 FTP 连接时 DNS 必须可用。对于 IPv6 主机,请使用主机名而不要使用 IPv6 地址。
virtual 10.1.2.3 root /var/ftp/virtual/ftp-serv virtual 10.1.2.3 banner /var/ftp/virtual/ftp-serv/banner.msg virtual 10.1.2.3 logfile /var/log/ftp/virtual/ftp-serv/xferlog |
上面的示例在虚拟 FTP 服务器上设置 root 目录、banner 和 logfile 的位置。
带有 -l 选项的ftpaddhost(1M) 脚本可用于配置有限虚拟主机。
在以下示例中,运行带有 -l -b -x 选项的 ftpaddhost,可以使用虚拟根 /var/ftp/virtual/10.1.2.3 下的测试标题和日志文件 /var/ftp/virtual/10.1.2.3/xferlog 配置有限虚拟主机托管。
# ftpaddhost -l -b -x /var/ftp/virtual/10.1.2.3/xferlog \ /var/ftp/virtual/10.1.2.3 |
完整虚拟主机托管允许每个虚拟域使用单独的配置文件。要在 FTP 服务器上启用对虚拟主机托管的完整支持,可以创建或修改特定域的以下 FTP 配置文件:
ftpaccess
ftpusers
ftpgroups
ftphosts
ftpconversions
有关详细信息,请参见 ftpaccess(4)、ftpusers(4)、ftpgroups(4)、ftphosts(4) 和 ftpconversions(4)。
如果单独版本的配置文件不可用,则可以使用 /etc/ftpd 目录中的主版本的文件。
成为超级用户或承担等效角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2 章 “使用 Solaris Management Console(任务)”。
将以下项添加到 /etc/ftpd/ftpservers 文件中。
address /config-file-dir |
虚拟服务器的 IP 地址
包含对虚拟主机自定义的配置文件的目录
虽然可以使用 hostname 作为虚拟服务器的 address,但强烈建议您使用 IPv4 地址。为了匹配 hostname,接收 FTP 连接时 DNS 必须可用。对于 IPv6 主机,请使用主机名而不要使用 IPv6 地址。
要为虚拟主机创建自定义版本的 FTP 服务器配置文件,请将主版本的文件从 /etc/ftpd 复制到 /config-file-dir 目录中。
有关详细信息,请参见 ftpservers(4)。
# # FTP Server virtual hosting configuration file # 10.1.2.3 /net/inet/virtual/somedomain/ 10.1.2.4 /net/inet/virtual/anotherdomain/ |
上面的示例为虚拟服务器上的两个不同域指定 IP 地址。
带有 -c 选项的ftpaddhost(1M) 脚本可用于配置完整虚拟主机。
在以下示例中,运行带有 -c -b -x 选项的 ftpaddhost,可以使用虚拟根 /var/ftp/virtual/10.1.2.3 下的测试标题和日志文件 /var/ftp/virtual/10.1.2.3/xferlog 配置完整虚拟主机托管。
# ftpaddhost -c -b -x /var/ftp/virtual/10.1.2.3/xferlog \ /var/ftp/virtual/10.1.2.3 |
可以通过以下三种方式之一启动 FTP 服务器:
独立服务器始终具有可能最快的响应时间,适用于专门提供 FTP 服务的大型服务器。由于独立系统无需重新启动,所以独立服务器可以为专用服务器提供较低的连接延迟。即使在非高峰时间,独立服务器也始终处于运行状态以无限等待连接。
缺省情况下,SMF 服务配置为使用 nowait 模式启动 FTP 服务器。如果站点处理许多连接,还可以在单机模式下运行 FTP 服务器。有关其他命令行选项的信息,请参见 in.ftpd(1M) 手册页。
成为超级用户或承担等效角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2 章 “使用 Solaris Management Console(任务)”。
验证 FTP 服务器的 wait 属性。
报告 wait=FALSE 的行指示服务器在 nowait 模式下启动。
# inetadm -l network/ftp SCOPE NAME=VALUE name="ftp" endpoint_type="stream" proto="tcp6" isrpc=FALSE wait=FALSE exec="/usr/sbin/in.ftpd -a" user="root" default bind_addr="" default bind_fail_max=-1 default bind_fail_interval=-1 default max_con_rate=-1 default max_copies=-1 default con_rate_offline=-1 default failrate_cnt=40 default failrate_interval=60 default inherit_env=TRUE default tcp_trace=FALSE default tcp_wrappers=FALSE |
启动 FTP 服务器。
# svcadm enable network/ftp |
成为超级用户或承担等效角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2 章 “使用 Solaris Management Console(任务)”。
禁用 FTP 服务器。
# svcadm disable network/ftp |
启动独立 FTP 服务器。
# /usr/sbin/in.ftpd -a -S |
将该行添加到 FTP 服务器启动脚本中。有关创建系统启动脚本的信息,请参见《系统管理指南:基本管理》中的“使用运行控制脚本”。
成为超级用户或承担等效角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2 章 “使用 Solaris Management Console(任务)”。
禁用 FTP 服务器。
# svcadm disable network/ftp |
向 inittab 文件中添加项以启动该服务。
/etc/inittab 中的新项应与以下类似:
ftpd:3:respawn:/usr/sbin/in.ftpd -a -s |
通知 init 重新检查 /etc/inittab。
此命令应启动 FTP 服务。
# init q |
ftpshut(1M) 命令在特定时间关闭 FTP 服务器。
运行 ftpshut 时,将通过用于指定发生关闭的时间、拒绝新连接的时间和放弃现有连接的时间的命令行选项,生成一个文件。将基于此信息向用户发出服务器关闭通知。由 ftpshut 创建的文件的位置由 ftpaccess 文件中的 shutdown 指令指定。
按照以下过程中的步骤运行 ftpshut 并将 shutdown 指令添加到 ftpaccess 文件中。
成为超级用户或承担等效角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2 章 “使用 Solaris Management Console(任务)”。
将以下项添加到 ftpaccess 文件中。
shutdown path |
该关键字用于指定一个文件的 path,要定期此文件检查以查看 FTP 服务器是否已预定关闭。
由 ftpshut 命令创建的文件的位置
运行 ftpshut 命令。
ftpshut [ -V ] [ -l min] [ -d min] time [warning-message...] |
该命令提供用于通知用户,FTP 服务器正在关闭的过程。
指定显示版权和版本信息,然后终止的选项
该标志用于调整拒绝到 FTP 服务器的新连接的时间
该标志用于调整断开到 FTP 服务器的现有连接的时间。
由单词 now 指定的立即关机的关机时间,或使用两种格式之一(+ number 或 HHMM)指定的将来关机的关机时间
关机通知消息
使用 ftprestart 命令可在关机之后重新启动 FTP 服务器。
有关详细信息,请参见 ftpshut(1M)、ftpaccess(4) 和 ftprestart(1M)。
本节介绍调试 FTP 服务器的问题的一些方法。
FTP 服务器将用于调试的消息写入为 /etc/syslog.conf 文件中的守护进程消息指定的位置。如果使用 FTP 服务器出现问题,请首先检查此文件中的这类消息。
FTP 服务器消息由工具守护进程和级别信息控制。要将来自 FTP 服务器的消息发送到 /var/adm/message 并让 syslogd 重新读取其配置文件,请按照以下说明操作:
将如下所示的项添加到 /etc/syslog.conf 文件中。
daemon.info /var/adm/message |
向 syslogd 发出重新读取其配置的信号。
# svcadm refresh system/system-log |
此操作将导致来自 FTP 服务器的提示性消息被写入 /var/adm/messages 中。
要使用 greeting text 功能检查是否正确使用了 ftpaccess 文件,请执行以下操作:
将以下指令添加到 ftpaccess 文件中。
greeting text message |
连接到 FTP 服务器。
如果显示消息失败,请执行以下操作:
确认 ftpaccess 文件的位置是否正确。使用 strings(1) 命令获取 FTP 服务器二进制程序的文件位置。
# strings /usr/sbin/in.ftpd | grep "^/.*ftpaccess" |
检查 ftpservers 文件以查看是否已配置虚拟主机托管。
有关详细信息,请参见 ftpaccess(4)、ftpservers(4)、strings(1)、syslog.conf(4) 和 pgrep(1)。
要查看由 FTP 用户执行的命令,请使用 ftpaccess 中的 log commands 日志记录功能。
将以下指令添加到 ftpaccess 文件中以记录由 typelist 中指定的用户执行的各个命令。
log commands typelist |
检查写入 /etc/syslog.conf 中指定的位置的消息。
以下列出了有关提高繁忙 FTP 站点性能的一些建议。
通常支持许多同时连接的站点应在单机模式下运行 FTP 服务器,请参见自动启动 FTP 服务器。
使用 vmstat 和其他系统实用程序监视驻留 FTP 服务器的系统。如果系统资源不足,请对同时连接的数量设置限制,请参见如何设置用户登录限制。有关系统监视的更多信息,请参见《系统管理指南:高级管理》中的第 20 章 “监视系统性能(任务)”。
如果强加连接限制,请考虑使用 ftpaccess 文件中的 limit-time 和 timeout idle 功能以阻止用户扰乱连接。如果不强加连接限制,请针对 in.ftpd 指定 -Q 选项。
如果不需要 /var/adm/wtmpx 中的 ftp 登录和注销记录,请针对 in.ftpd 指定 -W 选项。
要降低驻留 FTP 服务器的系统的负载,请使用 ftpaccess 文件中的 recvbuf 和 sendbuf 功能增加传送缓冲区大小。如果选择比较大的缓冲区大小,则可能需要使用 ftpaccess 文件中的 timeout data 功能增加数据活动超时。
FTP 服务器将读取各种数据库中的内容,包括主机、口令、组和服务。较慢的查找可能会导致登录到 FTP 服务器出现严重延迟,首先在 nsswitch.conf 中配置files 资源可将查找时间降至最低。有关更多信息,请参见 nsswitch.conf(4) 手册页。
缺省情况下,FTP 服务器尝试查找远程主机的名称,此过程可能很慢,将会导致登录出现严重延迟。ftpaccess 文件中的rhostlookup 功能可用于停止此查找。但是,请注意,如果没有查找远程主机的名称,使用 ftpaccess 文件中的其他功能和匹配 ftphosts 文件中的项时,将仅匹配远程主机的 IP 地址。远程主机的 IP 地址也将在消息和 %R 魔饼位置中使用。有关更多详细信息,请参见 ftpaccess(4) 手册页中 rhostlookup 功能的说明。
检索配额信息也可能导致登录到 FTP 服务器时出现严重延迟,因此如果利用配额魔饼,请仅使用 ftpaccess 文件中的 quota-info 功能。有关配额魔饼的列表,请参见 ftpaccess(4) 手册页。
本章介绍登录到远程系统并管理其文件所需的全部任务。以下是本章中的逐步说明列表。
本章介绍了用于登录远程系统并从中复制文件的任务,如下表中所述。
表 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 |