传统的 FTP 服务器由 inetd(互联网超级服务器守护进程)执行。标准的 FTP 端口是 21 端口。当用户尝试登录时,FTP 服务器使用标准的系统调用来检查用户名和密码,对照系统密码文件中的条目,或者如果您使用 NIS,则对照 NIS 表。如果登录正确,用户将被授予系统访问权限。
匿名 FTP 的工作方式不同。用户使用 anonymous 或 ftp 用户名登录(这可以在配置文件中定义)。然后他被授予对已 chroot() 的目录树的访问权限。这确保了用户无法访问他未被授权的目录树。chroot 目录树通常包含一个模拟文件系统,其中包含 bin/,etc/ 和 lib/ 目录。用于下载的文件通常放在 pub/ 目录中。
匿名 FTP 树中使用模拟文件系统的原因是 FTP 守护进程为 ls 请求运行外部命令。您也可以将其他程序放在 bin 目录中,用户可以使用其 ftp 客户端中的 SITE 命令运行它们。例如,Red Hat 的 FTP 包括 RPM 命令(供用户查询站点上的 RPM 软件包)。
一些 FTP 服务器的工作方式不同。例如,一些服务器允许独立于系统级密码文件设置用户帐户(仅限 FTP 帐户)。一些服务器(例如 ProFTPD 和 NcFTPd)具有内置的 ls 命令,并且不需要 chroot 结构中的特殊目录树。其他 ftp 服务器完全偏离了标准的 ftp 概念。例如,FTP4ALL 完全不使用系统密码。它使用自己的用户和组文件,并具有诸如上传/下载比率和可自定义的服务器消息等功能。
WU-FTPD 是许多 Linux 发行版(包括 Red Hat 和 Caldera)中包含的 ftp 守护进程。您可以在 http://www.wu-ftpd.org 了解更多关于 WU-FTPD 的信息。
WU-FTPD FAQ 可以在 http://www.cetis.hvu.nl/~koos/wu-ftpd-faq.html 网站上找到。
ProFTPD 是一个强大的 FTP 服务器,它包括 Apache 风格的配置,对虚拟主机的广泛支持以及内置的 ls 命令。
完整的命令参考和下载可以在 http://www.proftpd.org 找到。