写在前面
本文参考OpenBSD 3.8的官方FAQ文档和ftpd的man文档写成,更全面的信息请参看这两个文档。
·FAQ: Setting up Anonymous FTP Services
·Manual Page: ftpd
任何操作均在OpenBSD 3.8 Release上测试通过。
注:本文能够任意转载,但请保留作者信息,谢谢。
ftpd的三种启动方式
OpenBSD的ftpd程式没有配置文档,就靠配置运行参数进行配置。任何参数的
含义都能够在ftpd 的man文档中获得周详信息:
$ man ftpd
ftpd程式的启动有三种方法:
·inetd方式
·'rc'方式
·直接在命令行下执行ftpd命令
1、inetd方式
在'etc/inetd.conf'文档中有这么一行:
这里为'ftpd'传递了两个参数'-US'。当然,您还能够组合自己想要的参数。
(一些常用参数的含义已在下文给出)。使用inetd方式,ftpd由inetd进程管
理,所以需要启动inetd服务才能启动ftpd。在OpenBSD的默认配置中,inetd被
配置为随系统启动。查看'/etc/rc.conf'中的'inetd'变量的值:
2、'rc'方式
所谓'rc'方式,指的就是通过修改'/etc/rc.conf'或'/etc/rc.conf.local'文档中变
量的值,为服务的启动添加'entry',使服务能够随系统启动。使用'rc'方式启
动fttpd,只需要将'/etc/rc.conf'中的'ftpd_flags'变量配置为自己组合好的参数
即可。这种方法需要在系统重启后服务才会随系统启动(这里的参数暂时使用
和'inetd'方式相同的参数):
3、直接在命令行执行ftpd命令
这种方法的好处是无需重新启动系统就能够启动ftpd服务:
停止ftpd
1、'/etc/rc.conf'
假如无需ftpd随系统启动,则在'/etc/rc.conf'文档中将'ftpd_flags'变量的值设
置为"NO"”:
2、# kill PID
假如需要现在就结束ftpd进程,则使用\kill PID"的方式来实现:
ftpd常用参数
以下是ftpd 常用的一些参数(这里列出的只是常用的,并不是全部。更多的参
数请查看OpenBSD 的Manual Page。
· -4 假如指定了\-D"参数,则强制ftpd 只使用IPv4地址。
· -6 和\-4"的解释类似;假如指定了\-D"参数,则强制ftpd只使用IPv6地址。
· -A 只允许匿名登录(除非指定了\-n"选项)。
· -D 假如指定了该参数,ftpd 将做为daemon运行,监听ftpd 端口并且fork子进程对连接进行处理。在繁忙的服务器上,这样能够减少系统负载,和使用inetd 方式启动ftpd比起来,这种方式使用更少的系统资源。
· -d 使用LOG FTP将Debug信息写入syslog。
· -l 每个成功和失败的ftp session 都将由LOG FTP 工具通过syslog记录下日志。假如这个选项被指定两次(-ll),任何get/put/append/delete/make、 directory/remove、dire操作连同所操作的文档都将被记录进日志。
· -U 每个并发的ftp session都被记录到日志文档/var/run/utmp,记录的格式就象who(1)命令的输出相同。
· -n 禁止匿名登录。默认是允许的。
· -S 假如配置了这个参数,ftpd 将会把任何匿名用户的下载情况记录在文档/var/log/ftpd 中(假如该文档存在的话)。
· -T maxtimeout 连接超时的时间限制。默认是2小时。
· -u mask 强制配置umask为指定的mask。而不是使用/etc/login.conf 中的配置(/etc/login.conf 中通常配置为022),并且不允许chmod。
常用参数组合
看了上面几个常用选项的含义,您应该能够组合出合适的选项来满足自己的功能需求了。
1、只允许使用系统帐号登录FTP
因为匿名用户登录需要使用到系统中的一个名为"ftp"的帐户(更多关于该帐户的描述,请看本文下半部分),而OpenBSD系统中默认没有该帐户,需要手动建立并且配置正确的权限,所以假如只允许用户通过系统帐号登录FTP服务器,则只需要在/etc/rc.conf 中将ftpd °ags 的值简单地配置为"-D"即可(虽然这时候的配置仍然允许匿名用户登录,但是因为系统中没有"ftp"用户,所以无法登录)。当然您也能够多配置一些参数。比如:
参考上面几个常用选项的说明,您就会明白这是什么意思了。
2、允许匿名用户登录访问FTP资源
因为匿名用户登录到FTP服务器后,实际上是以\ftp"用户的身份进行任何操作,所以出于安全考虑,这个用户的权限通常被配置得很低。比如:
· 不为该用户提供一个可用的shell,使其无法登录系统;
· 没有一个可用的密码(即FAQ上说的"This account shouldn't have a usable password;");
· 登录系统后被chroot;
· ......
配置用于匿名访问FTP资源的'ftp'帐户
接下来我们要做的就是按照上面列出的三个需要来添加和配置这个低权限、处处受限的"ftp"用户。
1、添加"ftp"帐户以提供匿名访问
在/etc/shells中添加一个无法实际使用的shell配置"ftp"使用这个shell的目的,是不允许他通过shell登录到系统中。通常我们会有两种选择:
· /sbin/nologin
· /usr/bin/false
为了在添加用户时能够使用这两个shell,我们能够这样做:
# echo '/usr/bin/false' >> /etc/shells
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!



