为因特网 FTP 协议提供服务器功能。
注意: ftpd 守护进程一般由 inetd 守护进程启动。也可以用 SRC 命令从命令行来控制。
/usr/sbin/ftpd [ -d ] [ -f ] [ -ff ] [ -k ] [ -l] [ -U ] [ -t TimeOut ] [ -T MaxTimeOut ] [ -s ] [ -u OctalVal ] [-q [-C]]
/usr/sbin/ftpd 守护进程是 DARPA 因特网文件传输协议(FTP)服务器进程。 ftpd 守护进程使用传输控制协议(TCP)侦听指定的端口,端口在 /etc/services 文件中的 ftp 命令服务规范中指定。
ftpd 守护进程的修改可以通过系统管理界面程序(SMIT)或者系统资源控制器(SRC)来完成,通过编辑 /etc/inetd.conf 或者 /etc/services文件来实现。不建议在命令行下输入 ftp。 ftpd 守护进程如果在 /etc/inetd.conf 文件中未注释,缺省情况下它将启动。
inetd 守护进程从 /etc/inetd.conf 文件和 /etc/services 文件中获取信息。
如果您改变 /etc/inetd.conf 或者 /etc/ services 文件,运行 refresh -s inetd 或者 kill -1 InetdPID 命令以通知 inetd 守护进程关于配置文件的改动。
ftpd 守护进程根据 csh 命令的约定来扩展文件名。 此命令可以使用如下的元字符串:*(星号), ? (问号), [ ](左右方括号), { } (左右花括号) 以及 ~ (代字号)。
搜索/etc/ftpaccess.ctl 文件,寻找以 allow: 、deny: 、 readonly: 、 writeonly: 、 readwrite: 、 useronly: 、 grouponly:、 herald: 和/或 motd: 开始的行。其余的行忽略。如果文件不存在,则所有主机均允许 ftp 访问。allow: 和 deny: 行用于限制对主机的访问。 readonly:, writeonly: 和 readwrite: 行用于限制 ftp 的读(获取)写(存放)。useronly: 和 grouponly: 行用于定义匿名用户。 herald: 和 motd: 行用于登录前后的多行消息。
/etc/ftpaccess.ctl 文件中所有行的语法形式:
关键字:值,值 ...
每个关键字可以指定一个或者多个值。同样的关键字可以出现在很多行里。/etc/ftpaccess.ctl 文件中的每一行最多包含 1024 个字符,超过的将被忽略。
allow: 和 deny: 行的语法是:
allow: host, host, ... dent: host, host, ...
如果指定了一个 allow: 行,那么只有在 allow: 行里列出的主机允许访问 ftp。其它的主机将拒绝访问 ftp。如果不包含 allow: 行,那么,除了那些在 deny: 行中已经指定的之外,所有的主机都可以访问 ftp。主机可以通过主机名或者 IP 地址来指定。
readonly:、writeonly: 和 readwrite: 行的语法如下:
readonly: dirname, dirname, ... writeonly: dirname, dirname, ... readwrite: dirname, dirname, ...readonly:
行列出了只读目录, writeonly: 行列出了只写目录。如果在只写目录下进行读访问或者在只读目录下进行写访问,访问将被拒绝。所有其它目录都被授权访问,除非指定了 readwrite: 行。 如果指定了 readwrite: 行,只有在 readwrite: 行和/或 readonly: 行中列出的目录可以进行读访问,同时只有在 readwrite: 行和/或 writeonly: 行中列出的目录可以进行写访问。 同时,这些行的值可以是“ALL” 或者“NONE”。
useronly: 和 grouponly: 行的语法如下:
useronly: username, username, ... grouponly: groupname, groupname, ...
用户名在 /etc/passwd 中,组名在 /etc/group 中。useronly: 行定义了一个匿名用户。 grouponly: 行定义了匿名用户组。这些匿名用户类似于在 ftp 活动中的匿名用户,他们被限制在自己的主目录下。
herald: 和 motd: 行的语法如下:
herald: path motd: on|off
path 是包含将在登录前显示的多行 herald 的文件的全路径名称。当 motd: 行的值为‘on' 时, $HOME/motd 文件包含登录后将显示的多行消息。如果用户是定义好的匿名用户, /etc/motd 文件包含登录后将显示的多行消息。(请注意 /etc/motd 是在匿名用户的登陆根目录下)。 motd: 行的缺省值是 off。
在 ftpd 守护进程可以为客户进程传输文件之前,它必须认证客户进程。 ftpd 守护进程根据如下规则认证客户进程:
ftpd 守护进程允许在以下条件均满足时进行访问:
当处理某个匿名 FTP 用户时,服务器在 FTP 用户帐户的主目录中执行 chroot 命令。为获得较高的安全性,请在构造 FTP 子树时执行以下规则:
当处理 /etc/ftpaccess.ctl 中定义的匿名 FTP 用户时,服务器在用户帐户的主目录下执行 chroot 命令。为获得更好的安全性,当构造用户子树时请执行以下规则:
服务器必须以 root 用户运行,来创建有特权端口号的套接字。服务器维护一个登录用户的有效的用户标识当在套接字上绑定地址时回复给 root 用户。
ftpd 守护进程目前支持以下 FTP 请求:
ABOR | 终止前一次命令。 |
ACCT | 指定帐户(被忽略)。 |
ADAT | 指定认证 / 安全数据。 |
ALLO | 分配存储器(空)。 |
APPE | 添加到文件。 |
AUTH | 指定认证 / 安全机制。 |
CCC | 指定清除命令通道。 |
CDUP | 转到当前工作目录的父目录。 |
CWD | 改变工作目录。 |
DELE | 删除文件。 |
ENC | 指定私有保护命令。 |
HELP | 给出帮助信息。 |
其余在因特网 RFC 959 中定义的 FTP 请求被识别,但是不执行。 MDTM 和 SIZE 请求在 RFC 959 中没有指定,但它们已经被列入下次的 FTP RFC 更新计划。
如果在数据传输过程中收到 STAT 请求而且前面有 Telnet IP 信号和 SYNCH 信号,则返回传输状态。
ftpd 守护进程应该通过使用系统管理界面程序(SMIT)或者修改 /etc/inet.conf 文件来被控制。不建议在命令行中输入 ftpd 。
ftpd 守护进程是 inetd 守护进程的子服务器,而 inetd 守护进程则是系统资源控制器的子系统(SRC)。ftpd 守护进程是 tcpip SRC 子系统组的成员。此守护进程在 /etc/inetd.conf 文件中缺省启用,它可以通过以下 SRC 命令来进行操作:
startsrc | 启动一个子系统、子系统组,或是一个子服务器。 |
stopsrc | 终止子系统、子系统组或子服务器。 |
lssrc | 获取一个子系统,子系统组,或是一个子服务器的状态。 |
-C | 允许用户指定:通过 send_file 命令发出的文件必须在网络高速缓冲区(NBC)中经过缓存处理。此标志必须在指定了 -q 标志的情况下使用。只有当文件在无保护的情况下以二进制方式发送时此标志才适用。 |
-d | 向 syslogd 守护进程发送关于 ftpd 守护进程操作的调试信息。如果指定了 -d 标志,必须编辑 /etc/syslog.conf 文件,然后增加如下条目:
daemon.debug FileName 注意: syslogd 守护进程的调试级别包含了信息级别消息。 如果不编辑 /etc/syslog.conf 文件,则没有消息产生。在修改完 /etc/syslog.conf 文件后,运行 refresh -s syslogd 命令,或者 kill -1 SyslogdPID 命令,以通知 syslogd 守护进程其配置文件的更改。要获取更多关于调试级别的信息,请参考 /etc/syslog.conf 文件。 |
-f | 当客户机请求服务器连接回特定端口时,禁用特权端口的检查。在缺省情况下, ftpd 不允许客户机请求连接到特权端口,这是出于安全方面的考虑。 |
-ff | 当客户机请求服务器连接回特定客户机端口时,禁用特权端口和匹配用于控制连接的那个的 IP 地址的检查。使用此标志后,客户机可以请求服务器向备用的主机或者接口发送数据。在缺省情况下, ftpd 出于安全考虑,不允许此操作。 |
-k | 在数据传输套接字上,设置在 /sys/socket.h 文件中定义的 SO_KEEPALIVE 选项,以启用在事件 TCP/IP 暂挂中的数据传输到超时。空闲的间隔时间依 system-wide 的取值而定,此参数通过 no 命令中的 tcp_keepidle 和 tcp_keepintvl 选项指定。如果没有此标志, ftpd 数据传输将不会超时。 |
-l | 向 syslogd 守护进程发送关于 ftpd 守护进程的日志信息。如果指定 -l 标志,必须编辑 /etc/syslog.conf 文件并增加如下条目:
daemon.info FileName 如果不编辑 /etc/syslog.conf 文件,则不会产生消息。当修改完 /etc/syslog.conf 文件,运行 refresh -s syslogd 命令或者 kill -1 SyslogdPID 命令以通知 syslogd 守护进程其配置文件的修改。关于调试级别的更多信息,请参考 /etc/syslog.conf 文件。 |
-q | 允许用户指定: send_file 子例程必须用于在网络上发送文件。只有当文件在无保护的情况下以二进制方式发送时此标志才适用。 |
-tTimeOut | 经过指定的秒数后退出已经停止的会话,秒数通过 TimeOut 变量来指定。缺省值是 15 分钟(900 秒)。 |
-T MaxTimeOut | 经过指定的最大秒数后退出已经停止的会话,最大秒数通过 MaxTimeOut 变量来指定。缺省值是 2 小时(7200 秒)。 |
-s | 打开 socket-level 调试。 |
-u OctalVal | 设置 ftpd 守护进程的 umask。OctalVal 变量必须指定为八进制的值,用来定义 umask。缺省的 umask 是八进制的 027,它导致了 rw-r- 的文件许可。 |
-U | 在传输中保持文件未锁定。如果此标志通过 /usr/sbin/ftpd 来指定,那么文件在传输过程中仍可打开。 |
注意: ftpd 守护进程的参数可以通过 SMIT 来指定,也可以通过编辑 /etc/inetd.conf 文件来指定。
startsrc -t ftp
startsrc 命令带 -t 标志启动 ftpd 子服务器。您必须使用 -t 标志来指定子服务器。否则,命令不会正确执行。
stopsrc -t ftp
stopsrc 命令带 -t 标志停止 ftpd 子服务器。 stopsrc 命令允许启动所有暂挂的连接,并完成所有现存的连接,但不允许启动新的连接。您必须使用 -t 标志来指定子服务器。否则,命令不会正确执行。
stopsrc -t -f ftp
stopsrc命令和 -t -f 标志迫使 ftpd 子服务器停止。它立刻中止所有暂挂的连接和现存的连接。
lssrc -t ftp
lssrc 命令和 -t 标志返回守护进程的名称、进程标识和状态(活动或者中止)。您必须使用 -t 标志来指定子服务器。否则,命令不会正确执行。
/etc/locks/ftpd | 包含内部锁和进程标识存储器。 |
/etc/group | 包含组的密码。 |
/etc/passwd | 包含用户的密码。 |
/etc/security/login.cfg | 包含登录和用户认证的配置信息。 |
/etc/security/passwd | 包含加密后的密码。 |
/etc/syslog.conf | 包含 syslogd 守护进程的配置信息。 |
/usr/samples/tcpip/anon.ftp | 包含示例 shell 脚本,通过它可以设置匿名 FTP 帐户。此文件也包含使用说明书。 |
ftp 命令、 lssrc 命令、 kill 命令、 no 命令、 rcp 命令、 refresh 命令、 rlogin 命令、 rsh 命令、 startsrc 命令、 stopsrc 命令以及 telnet 命令。
kvalid_user 函数。
/etc/ftpusers 文件格式、 /etc/inetd.conf 文件格式、 /etc/services $HOME/.k5login 文件格式。
《AIX 5L V5.2 系统管理指南:通信与网络》中的『TCP/IP 守护进程』。
《AIX 5L V5.2 系统用户指南:通信与网络》中的『安全 Rcmd』。
《AIX 5L V5.2 性能管理指南》中的『网络选项可调参数』。