首页 > 系统 > 关键词  > linux服务器最新资讯  > 正文

OpenBSD自带ftpd程序搭建ftp服务器

2008-09-25 17:55 · 稿源:互联网
写在前面

本文参考OpenBSD3.8的官方FAQ文档和ftpd的man文档写成,更全面的信息请参看这两个文件。
·FAQ:SettingupAnonymousFTPServices
·ManualPage:ftpd
所有操作均在OpenBSD3.8Release上测试通过。
注:本文可以任意转载,但请保留作者信息,谢谢。

ftpd的三种启动方式

OpenBSD的ftpd程序没有配置文件,就靠设置运行参数进行配置。所有参数的
含义都可以在ftpd的man文档中获得详细信息:
$manftpd
ftpd程序的启动有三种方法:
·inetd方式
·'rc'方式
·直接在命令行下执行ftpd命令

1、inetd方式

在'etc/inetd.conf'文件中有这么一行:

ftpstreamtcpnowaitroot/usr/libexec/ftpdftpd-US
这里为'ftpd'传递了两个参数'-US'。当然,你还可以组合自己想要的参数。
(一些常用参数的含义已在下文给出)。使用inetd方式,ftpd由inetd进程管
理,所以需要启动inetd服务才能启动ftpd。在OpenBSD的默认设置中,inetd被
配置为随系统启动。查看'/etc/rc.conf'中的'inetd'变量的值:
inetd=YES

2、'rc'方式

所谓'rc'方式,指的就是通过修改'/etc/rc.conf'或者'/etc/rc.conf.local'文件中变
量的值,为服务的启动添加'entry',使服务能够随系统启动。使用'rc'方式启
动fttpd,只需要将'/etc/rc.conf'中的'ftpd_flags'变量设置为自己组合好的参数
即可。这种方法需要在系统重启后服务才会随系统启动(这里的参数暂时使用
与'inetd'方式相同的参数):

ftpd_flags="-US"

3、直接在命令行执行ftpd命令

这种方法的好处是不需要重新启动系统就可以启动ftpd服务:

#/usr/libexec/ftpd-4DllUS
停止ftpd

1、'/etc/rc.conf'

如果不需要ftpd随系统启动,则在'/etc/rc.conf'文件中将'ftpd_flags'变量的值设
置为"NO"”:

ftpd_flags="NO"

2、#killPID
如果需要现在就结束ftpd进程,则使用\killPID"的方式来实现:

#kill$(cat/var/run/ftpd.pid)
ftpd常用参数

以下是ftpd常用的一些参数(这里列出的只是常用的,并不是全部。更多的参
数请查看OpenBSD的ManualPage。

·-4如果指定了\-D"参数,则强制ftpd只使用IPv4地址。
·-6和\-4"的解释类似;如果指定了\-D"参数,则强制ftpd只使用IPv6地址。
·-A只允许匿名登录(除非指定了\-n"选项)。
·-D如果指定了该参数,ftpd将做为daemon运行,监听ftpd端口并且fork子进程对连接进行处理。在繁忙的服务器上,这样可以减少系统负载,与使用inetd方式启动ftpd比起来,这种方式使用更少的系统资源。
·-d使用LOGFTP将Debug信息写入syslog。
·-l每个成功和失败的ftpsession都将由LOGFTP工具通过syslog记录下日志。如果这个选项被指定两次(-ll),所有get/put/append/delete/make、directory/remove、dire操作以及所操作的文件都将被记录进日志。
·-U每个并发的ftpsession都被记录到日志文件/var/run/utmp,记录的格式就象who(1)命令的输出一样。
·-n禁止匿名登录。默认是允许的。
·-S如果设置了这个参数,ftpd将会把所有匿名用户的下载情况记录在文件/var/log/ftpd中(如果该文件存在的话)。
·-Tmaxtimeout连接超时的时间限制。默认是2小时。
·-umask强制设置umask为指定的mask。而不是使用/etc/login.conf中的设置(/etc/login.conf中通常设置为022),并且不允许chmod。

常用参数组合

看了上面几个常用选项的含义,你应该可以组合出合适的选项来满足自己的功能需求了。

1、只允许使用系统帐号登录FTP
因为匿名用户登录需要使用到系统中的一个名为"ftp"的帐户(更多关于该帐户的描述,请看本文下半部分),而OpenBSD系统中默认没有该帐户,需要手动建立并且设置正确的权限,所以如果只允许用户通过系统帐号登录FTP服务器,则只需要在/etc/rc.conf中将ftpd°ags的值简单地设置为"-D"即可(虽然这时候的设置仍然允许匿名用户登录,但是因为系统中没有"ftp"用户,所以无法登录)。当然你也可以多设置一些参数。比如:

ftpd°ags="-4DllUSn"
参考上面几个常用选项的说明,你就会明白这是什么意思了。
2、允许匿名用户登录访问FTP资源
因为匿名用户登录到FTP服务器后,实际上是以\ftp"用户的身份进行所有操作,所以出于安全考虑,这个用户的权限通常被设置得很低。比如:
·不为该用户提供一个可用的shell,使其无法登录系统;
·没有一个可用的密码(即FAQ上说的"Thisaccountshouldn'thaveausablepassword;");
·登录系统后被chroot;
·......

#p#分页标题#e#

设置用于匿名访问FTP资源的'ftp'帐户

接下来我们要做的就是按照上面列出的三个要求来添加和设置这个低权限、处处受限的"ftp"用户。
1、添加"ftp"帐户以提供匿名访问
在/etc/shells中添加一个无法实际使用的shell设置"ftp"使用这个shell的目的,是不允许它通过shell登录到系统中。通常我们会有两种选择:
·/sbin/nologin
·/usr/bin/false
为了在添加用户时可以使用这两个shell,我们可以这样做:

#echo'/sbin/nologin'>>/etc/shells
#echo'/usr/bin/false'>>/etc/shells

或者在未将它们加入到/etc/shells的情况下,在使用adduser添加帐户时加上"-shell"参数:
#adduser-shell/sbin/nologin
Enterusername[]:ftp
Enterfullname[]:anonymousftpduser
Entershellbashcshkshnologinsh[/sbin/nologin]:
......

这里在询问该用户使用何种shell时就出现了/sbin/nologin。如果不带这个参
数,将无法使用它:
#adduser
Enterusername[]:ftp
Enterfullname[]:anonymousftpduser
Entershellbashcshkshnologinsh[bash]:/sbin/nologin
/sbin/nologin:isnotallowed!
Entershellbashcshkshnologinsh[bash]:

这里就提示了不允许使用/sbin/nologin做为shell使用。

添加帐户

这里使用"adduser-sshell/sbin/nologin"来添加一个这样的'ftp'帐户做为示例,并将该用户的$HOME目录设置为"/var/ftp":

#adduser-shell/sbin/nologin-home/var
Useoption\-silent"ifyoudon'twanttoseeallwarningsandquestions.
Reading/etc/shells
Check/etc/master.passwd
Check/etc/group
Ok,let'sgo.
Don'tworryaboutmistakes.Iwillgiveyouthechancelatertocorrectanyinput.
Enterusername[]:ftp
Enterfullname[]:anonymousftpduser
Entershellbashcshkshnologinsh[/sbin/nologin]:ENTER
Uid[1001]:ENTER
Logingroupftp[ftp]:ENTER
Logingroupis\ftp".Inviteftpintoothergroups:guestno
no
:ENTER
Loginclassdaemondefaultsta.[default]:ENTER
Enterpassword[]:ENTER#在此直接按ENTER键。

这样就可以设置一个不可用的密码。

Setthepasswordsothatusercannotlogon?(y/n)[n]:y
Name:ftp
Password:****
Fullname:anonymousftpduser
Uid:1001
Gid:1001(ftp)
Groups:ftp
LoginClass:default
HOME:/var/ftp
Shell:
OK?(y/n)[y]:y
Addeduser\ftp"
Copyˉlesfrom/etc/skelto/var/ftp
Addanotheruser?(y/n)[y]:n
Goodbye!
#

到这里,添加用户的工作就完成了。还需要把系统从'/etc/skel'复制到$HOME目录的一些"dotˉles"给删除,以免暴露信息。'dotˉles'的第一行通常会有一些系统的信息,比如'/.cshrc'文件中就有这么一句:
#$OpenBSD:dot.cshrc,v1.52005/02/1606:56:57matthieuExp$
这至少就告诉了匿名登录的用户,这是个OpenBSD系统。所以建议把它们删除:
#rm-f/var/ftp/.*
为FTP目录设置正确的权限

1、'ftp'目录
"ftp"目录表示"ftp"用户的主目录,在本例中就是"/var/ftp"目录。将它的owner设置为"root",权限设置为任何人都不可写(555):

#chown-Rroot:wheel/var/ftp
#chmod-R555/var/ftp

2、'ftp/bin'目录
这个目录并不是必须的。如果希望匿名用户登录到FTP后能够执行一些command,就可以将command复制到这个目录下。所有的command的权限都应该设置为只允许执行(111)。
#mkdir/var/ftp/bin
#chown-Rroot:ftp/var/ftp/bin
#chmod-R111/var/ftp/bin/*

3、'ftp/etc'目录
和"ftp/bin"目录一样,这也是个可选的,并不推荐创建它。(更多关于该目录设置的信息请查看"ftpd"的man文档)。
4、'ftp/pub"目录
这个目录用来存放你希望被匿名用户访问的文件。权限应该设置为555。
#chown-Rroot:ftp/var/ftp/pub
#chmod-R555/var/ftp/pub

这里虽然提到了创建三个目录,但是实际上我们只需要创建'ftp/pub'目录并设置好权限就可以了。
chroot匿名登录的用户

'ftpd'会将'/etc/ftpchroot'文件中列出的用户都chroot。要使'ftp'用户在登录ftp后被chroot,只需要简单地把用户名添加到这个文件中就可以了。这是一个示例文件:

#file:/etc/ftpchroot
#$OpenBSD:ftpchroot,v1.31996/07/1812:12:47deraadtExp$
##
listofusers(oneperline)givenftpaccesstoachrootedarea.
#readbyftpd(8).
ftp
bibby

'ftpd'在启动时会读取这个文件,如果'ftp'和'bibby'这两个用户登录ftp,将被分
别chroot到自己的$HOME目录下。
其他一些相关文件

·/etc/ftpusers{列出了所有不受欢迎的用户。列在该文件中的用户都无法
登录ftp服务器。
·/etc/ftpwelcome{欢迎信息。登录的用户都将在登录时看到这一信息。
·/etc/motd{如果'/etc/ftpwelcome'文件不存在,则使用'/etc/motd'文件的内容做为欢迎信息。
2.message{这个文件可以被放置在'ftp'目录下的任何一个子目录中。用户进入该目录时就会显示这个文件中的内容。

上一页[1][2]

举报

  • 相关推荐
  • Mistplay发布iPhone版手游忠诚度应用及LoyaltyPlay变现方案

    2025年7月15日,全球手游忠诚度应用Mistplay在成立十周年之际推出两款新产品:iPhone版应用和变现方案LoyaltyPlay。Mistplay通过"玩赚"模式连接玩家与发行商,安卓版已覆盖全球九大市场,拥有数百万活跃用户。新产品将为中国开发者提供全新获客渠道和变现途径,同时通过AI引擎"Helios"和实时运营系统提升用户体验。公司持续投资亚太市场,帮助本地开发者拓展全球业务。iPhone版已上线美加应用商店,未来将扩展至更多地区。

  • 国内MCP服务器搜索引擎有哪些?MCP服务网站推荐

    在人工智能技术飞速发展的今天,AI模型与外部工具和服务的交互能力正逐渐成为推动技术进步的关键因素。今天,我们聚焦于一个新兴的、极具潜力的平台——AIbase(https://mcp.aibase.cn/),它为全球的AI开发者和研究人员提供了一个前所未有的MCP(Model Context Protocol,模型上下文协议)服务器集合平台,助力AI技术的进一步发展。 MCP协议是一种开放标准协议,旨在允许AI模型与外部

  • OPPO K13 Turbo系列外观公布:自带RGB风扇 EVA初号机配色

    OPPO今天正式公布了OPPO K13 Turbo系列新机外观,展示了新机的风扇等外观细节,以及全新配色。 该机后摄模组造型比较简洁,只有主摄和下放的风扇凸起,风扇外圈自带RGB灯效。

  • OPPO K13 Turbo系列真机亮相:自带风扇+RGB

    OPPO K13 Turbo系列真机已经现身在bilibili world《胜利女神:NIKKE》展区。 从图片来看,OPPO K13 Turbo系列系列后摄区域有点类似一加13T,采用了矩形金属方案,主摄下方就是散热风扇,同时外圈还自带RGB等效。 这个设计方案可以明显看出,该机是主打电竞体验。 风扇模组采用电镀镍工艺,放弃普通喷涂,带来更好的防水、防锈效果,并且号称风力提升120%,从而实现更强、更持久�

  • 国内MCP服务器搜索引擎有哪些?MCP导航站平台推荐

    在人工智能技术蓬勃发展的今天,AI模型与外部工具和服务的交互能力正成为推动技术进步的关键。AIbase(<https://mcp.aibase.cn/>)作为一个专注于MCP(Model Context Protocol,模型上下文协议)服务器的集合平台,为全球的AI开发者和研究人员提供了一个前所未有的资源库,助力AI技术的进一步发展。 AIbase平台的核心在于其对MCP协议的深度整合。MCP协议是一种开放标准协议,允许AI模�

  • AIbase MCP服务库上线:集成服务器、客户端、调试、案例教程等服务

    在当今数字化时代,人工智能技术正以前所未有的速度发展,深刻地改变着我们的生活和工作方式。而要充分发挥AI的强大能力,离不开高效的工具和服务支持。今天,就让我们来了解一下一个专注于MCP(Model Context Protocol)服务的优质平台 —— AIbase(www.aibase.cn)。 AIbase平台(https://mcp.aibase.cn/)作为一个精选全球优质MCP服务器的集合平台,为AI应用开发者和爱好者提供了丰富的�

  • 国内MCP服务平台推荐!aibase.cn上线MCP服务器集合平台

    在当今数字化时代,人工智能技术正以前所未有的速度发展,深刻地改变着我们的生活和工作方式。而要充分发挥AI的强大能力,离不开高效的工具和服务支持。今天,就让我们来了解一下一个专注于MCP(Model Context Protocol)服务的优质平台 —— AIbase。 AIbase(<https://mcp.aibase.cn/>)是一个精选全球优质MCP服务器的集合平台。它就像一个精心打造的资源宝库,一站式整合了海�

  • 君乐宝威县一牧通过TPM优秀奖初审 牧业精益管理实现里程碑式突破

    君乐宝乳业集团威县第一牧场凭借系统性精益管理实践和显著提质增效成果,7月4日成功通过TPM(全面生产维护)优秀奖初审。作为君乐宝首家全面导入TPM管理体系的标杆牧场,该牧场构建了覆盖奶牛养殖、饲草管理、设备运维等全流程的精益管理体系,实现奶牛健康数据、产奶量等关键指标的实时监测,达到国际先进水平。评审专家对牧场TPM推进的系统性和创新性给予高度肯定,认为其为中国乳业树立了全产业链一体化管理创新典范。君乐宝将持续优化管理体系,对标国际打造世界级牧场。

  • 王腾:REDMI Turbo 4 Pro非常成功 很多友商都在关注

    REDMI总经理王腾发文表示,REDMI上半年发布的Turbo 4 Pro非常成功,受到了广大用户的喜爱,也收到了很多友商的关注。 据悉,REDMI Turbo 4 Pro于4月份发布,首发起售价是1999元,该机上市不到一个月累计销量突破100万台,成为行业内最火的Turbo手机。 随着REDMI Turbo系列的热销,各大品牌纷纷推出Turbo系列手机,主打高性能,对此王腾表示,领先的一种体现就是被模仿,说明REDMI这几�

  • ppt自动生成工具最好用的3个

    文章介绍了当前AI生成PPT工具的发展现状,重点推荐了"秒出PPT"这一专业平台。该平台具有三大特色功能:1)智能对话式生成,支持中途修改需求;2)提供三种编辑模式(纯文本、纯设计和文本+设计);3)支持导入文档自动排版,提供"保持原文"和"AI智能修改"两种模式。平台还拥有丰富的模板库,支持在线更换颜色、字体等设计元素。虽然需要购买会员,但相比市面上质量参差不齐的同类产品,该工具在交互体验和功能完整性上表现突出。