30.8. 文件传输协议 (FTP)

Contributed by Murray Stokely.

30.8.1. 纵览

文件传输协议 (FTP) 为用户提供了一个简单的, 与 FTP 服务器交换文件的方法。 FreeBSD 系统中包含了 FTP 服务软件, ftpd。 这使得在 FreeBSD 上建立和管理 FTP 服务器变得非常简单。

30.8.2. 配置

最重要的配置步骤是决定允许哪些帐号访问 FTP 服务器。 一般的 FreeBSD 系统包含了一系列系统帐号分别用于执行不同的服务程序, 但未知的用户不应被允许登录并使用这些帐号。 /etc/ftpusers 文件中, 列出了不允许通过 FTP 访问的用户。 默认情况下, 这包含了前述的系统帐号, 但也可以在这里加入其它不应通过 FTP 访问的用户。

您可能会希望限制通过 FTP 登录的某些用户, 而不是完全阻止他们使用 FTP。 这可以通过 /etc/ftpchroot 文件来完成。 这一文件列出了希望对 FTP 访问进行限制的用户和组的表。 而在 ftpchroot(5) 联机手册中, 已经对此进行了详尽的介绍, 故而不再赘述。

如果您想要在服务器上启用匿名的 FTP 访问, 则必须建立一个名为 ftp 的 FreeBSD 用户。 这样, 用户就可以使用 ftpanonymous 和任意的口令 (习惯上, 应该是以那个用户的邮件地址作为口令) 来登录和访问您的 FTP 服务器。 FTP 服务器将在匿名用户登录时调用 chroot(2), 以便将其访问限制在 ftp 用户的主目录中。

有两个文本文件可以用来指定显示在 FTP 客户程序中的欢迎文字。 /etc/ftpwelcome 文件中的内容将在用户连接上之后, 在登录提示之前显示。 在成功的登录之后, 将显示 /etc/ftpmotd 文件中的内容。 请注意后者是相对于登录环境的, 因此对于匿名用户而言, 将显示 ~ftp/etc/ftpmotd

一旦正确地配置了 FTP 服务器, 就必须在 /etc/inetd.conf 中启用它。 这里需要做的全部工作就是将注释符 # 从已有的 ftpd 行之前去掉:

ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l

例 30.1 “重新加载 inetd 配置文件” 所介绍的那样, 修改这个文件之后, 必须让 inetd 重新加载它, 才能使新的设置生效。请参阅 第 30.2.2 节 “设置” 以获取更多有关如何在你系统上启用 inetd 的详细信息。

ftpd 也可以作为一个独立的服务启动。 这样的话就需要在 /etc/rc.conf 中设置如下的变量:

ftpd_enable="YES"

在设置了上述变量之后,独立的服务将在下次系统重启的时候启动, 或者通过以 root 身份手动执行如下的命令启动:

# /etc/rc.d/ftpd start

现在可以通过输入下面的命令来登录您的 FTP 服务器了:

% ftp localhost

30.8.3. 维护

ftpd 服务程序使用 syslog(3) 来记录消息。 默认情况下, 系统日志将把和 FTP 相关的消息记录到 /var/log/xferlog 文件中。 FTP 日志的位置, 可以通过修改 /etc/syslog.conf 中如下所示的行来修改:

ftp.info /var/log/xferlog

一定要小心对待在匿名 FTP 服务器中可能遇到的潜在问题。 一般而言, 允许匿名用户上传文件应三思。 您可能发现自己的 FTP 站点成为了交易未经授权的商业软件的论坛, 或发生更糟糕的情况。 如果不需要匿名的 FTP 上传, 可以在文件上配置权限, 使得您能够在其它匿名用户能够下载这些文件之前复查它们。

本文档和其它文档可从这里下载: ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

如果对于FreeBSD有问题,请先阅读 文档,如不能解决再联系 <questions@FreeBSD.org>.

关于本文档的问题请发信联系 <doc@FreeBSD.org>.