FreeBSD6.2架设FTP服务器详解
FTP采用 Client/Server 架构,FTP 协议比较特别的地方在于它在使用时必须建立二个联机:一个用来传输指令、一个用来传输档案。当我们使用 FTP 软件连到 FTP 器时,客户端会先连到器的连接端口21,并建立一条「控制联机」。接下来,您会输入账号、密码等指令,这些指令及 FTP 的响应都是使用都是使用「控制联机」。当您要下载档案时,或者是执行 ls 以列出目录中的档案时,档案或目录列表的下载是经另一个联机「数据联机」。「数据联机」和「控制联机」不同的是数据联机所传输的数据比较大,而控制联机只是用来传输指令及简单的响应。
基本上,一个完整的 FTP 联机建立过程为:
上述这种联机建立的方式是由器主动建立「数据联机」,我们称之为「主动模式」(Active Mode)。基本上主动模式的运作在没有防火墙或 NAT 的情形下没有什么问题,但若客户端有防火墙,则可能会无法建立联机。基本上,如果客户端使用的是 FreeBSD 的 NAT 不会有这种问题,FreeBSD 会自动做转换,但若是使用其它的防火墙就不一定可以支持 FTP 的 Active Mode。
要 FTP Active Mode 的问题,可以在联机时改用「被动模式」(Passive Mode)。所谓的被动模式就是由器打开一个连接端口,被动地等客户端连过来建立「数据联机」。被动模式的联机建立过程为:
由于控制联机及数据联机都是由客户端主动连过去器,如此即可避开防火墙及 NAT 的问题。
当您登入一台 FTP 器后,如果您输入 ls,却等了很久都没有响应,您可以输入
设定 FTP 器FreeBSD 内建有 FTP 器的功能,如果您要使用内建的 ftpd,我们不需要特别进行任何的动作,只要做好设定即可。1 启动FTP服务器有二种方式启动 ftpd,一种是使用 standalone daemon,另一种是使用 inetd。使用 inetd 我们可以管理许多,例如 telnet、ssh、ftp 等,大部份的都是使用 inetd 来启动,使用它的好处在于可以统一管理各种,并经由它来设定规则,例如是否要阻挡某些 IP 来源等。不过,使用 inetd 的方式缺点是每次有联机要求时,inetd 的 daemon 必须依联机的种类去执行相对映的指令,所以速度比较慢。另一种启动 FTP 的方式是使用 standalone daemon,也就是直接执行 FTP daemon,当它接收到新的联机时,就 fork() 出来处理,这种方式联机建立的速度较快,比较适合专门的 FTP 器。
使用 inetd,首先编辑 /etc/inetd.conf,将 ftp 设定开头的 # 移除:ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l
ftp stream tcp6 nowait root /usr/libexec/ftpd ftpd -l接下来,我们必须使用下列指令重跑 inetd:#kill -1 cat /var/run/inetd.pid现在您就可以开始使用 FreeBSD 的 FTP 了。
如果您要以独立的 daemon 方式启动 FTP,请先确定在 inetd.conf 中没有启动 FTP 。接下来,请在新增一个档案 /usr/local/etc/rc.d/ftpd.sh内容如下:#!/bin/sh
ftpd_program="/usr/libexec/ftpd"
ftpd_flags="-D -l"
case $1 in
start)
echo "Starting FTPD"
$ftpd_program $ftpd_flags
;;
stop)
echo "Stopping FTPD"
killall ftpd
;;
restart)
$0 stop
sleep 1
$0 start
;;
esac
编辑完后,我们必须将该档案变成可执行:#chmod 755 /usr/local/etc/rc.d/ftpd.sh接下来,您就可以使用下列指令启动 FTPD 了:#/usr/local/etc/rc.d/ftpd.sh tart如果您要停止 FTPD ,则使用下列指令:#/usr/local/etc/rc.d/ftpd.sh stop
2 编辑欢迎信息当我们联机到一个 FTP 站点时,我们可以看到二个欢迎讯息,一个是登入前的讯息,另一个是登入后的讯息。开头为 220- 的就是登入前的讯息,我们称它为欢迎讯息。以 230- 为开头的是登入后的讯息,我们称它为本日讯息 (Message of the day)。这二种讯息我们都可以自行设定。
如果您要设定的是登入前的讯息,请新增一个档案/etc/ftpwelcome,并将您的讯息写入该文件中。您不需要写 220- 等数据,FTP 器会自动帮您加上这种代码。而登入后的讯息是存放在 /etc/ftpmotd,您可以编辑该档以进行设定。
3 FTP服务器管理在启动 FTP 器时,我们可以加入一些参数以调整器的行为。例如,修改预设的连接端口、记录使用者上传、下载的档案等等。有些参数必须要在使用独立的 daemon 方式启动时才有用,而有的参数在 inetd 模式下也可以使用。下表为我们常用的参数:
参数 | 是否只能在 Daemon 模式下使用 | 意义 |
-a | 是 | 当您有二张卡或是二个 IP 时,我们可以设定只接受联机到某一个 IP 的联机要求。例如: ftpd -D -a 192.168.0.1 此范例表示只接受使用者联机到 192.168.0.1 这个 IP。 |
-d | 否 | 记录 FTP 的除错讯息。除了加入这个参数外,您必须修改 /etc/syslog.conf,并加入下列内容以记录 FTP 的讯息。 !ftpd*.* /var/log/ftpd.log |
-h | 否 | 不要显示 FTP 器的主机名称、软件信息、版本等。 |
-l | 否 | 记录 FTP 登入成功及失败的讯息。如果您使用二次 -l,则使用者上传、下载、删除、建立目录时都会留下记录。预设的记录会留在 /var/log/xferlog中。 |
-P | 是 | 我们知道 FTP 预设会****连接埠 21,以接受客户端的联机要求。不过如果您是以独立的 daemon 方式启动 FTP,则 可以使用 -P 加上连接埠号以改变预设连接埠。 |
另外,还有很多用来控制使用者权限的参数,将在后面说明。
如果您要修改 ftpd 启动的参数,在 inetd 模式下,您可以修改 /etc/inetd.conf,并在 ftp 设定的最后面加入参数,如下列粗体字所示:ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l -l -dftp stream tcp6 nowait root /usr/libexec/ftpd ftpd -l -l -d上面的范例中,我们多加入了参数 -l -d,以记录更多 ftpd 的讯息。
如果您是以独立的 Daemon 方式启动 ftpd,则请修改 /usr/local/etc/rc.d/ftpd.sh:#!/bin/sh
ftpd_program="/usr/libexec/ftpd"
ftpd_flags="-D -l -l -d"
...我们只要修改 ftpd_flags 的部份,加入您所要的参数即可。
4 FTP权限控制预设的 FTP 启动后,使用者可以上传、下载任何他们有权存取的档案。在登入后,使用者可以进到任何中的目录 (如果目录权限允许的话)。
我们可以设定限制某些账号不可以使用 FTP 登入。使用者在登入 FTP 器时,有几个规则会拒绝该账号登入:
/etc/ftpusers 定义了不可以使用 FTP 的使用者及群组。看一下该档案的内容,我们可以看到该档案中已经有一些使用者不可以登入 FTP。这些使用者都是预设的账号,我们也可以经由修改它来加入其它使用者。在 /etc/ftpusers 中,如果开头是 "@" 表示群组名称。除了控制使用者账号外,在「inetd」模式下,我们还可以控制联机来源。所有 FreeBSD 中由 inetd 所启动的都可以经由修改 /etc/hosts.allow 以使用 TCP Wrappd 来限制联机来源。下列为预设的 /etc/hosts.allow内容:# Provide a small amount of protection for ftpd
ftpd : localhost : allow
ftpd : .nice.guy.example.com : allow
ftpd : .evil.cracker.example.com : deny
ftpd : ALL : allow如果我们要限制某几个 IP 或网域不能使用 FTP,可以使用下列范例:
Provide a small amount of protection for ftpd
ftpd : localhost : allow
ftpd : 210.122.13.5 : deny
ftpd : .evil.cracker : deny
ftpd : ALL : allow如果您要设定只有某些来源可以使用 FTP,而拒绝大多数的主机,则可以设定:# Provide a small amount of protection for ftpd
ftpd : localhost : allow
ftpd : 192.168.0. : allow
ftpd : my.friend.com : allow
ftpd : ALL : deny
在使用者登入后,只要目录、档案权限许可,它们可以自由的上传、下载档案。如果您希望加以限制读写的权限,可以在启动 FTP 时加上下列几个参数:
参数 | 意义 |
-o | 限制所有使用者只能上传档案,而无法下载任何档案。 |
-r | 限制所有使用者对于器内所有档案只能只读,不可以建立目录、上传、更改档名、或任何会动到档案目录的指令。 |
上述的参数必须在启动 FTP 器时指定
一般使用者登入后,预设会进入自己的家目录中。使用者可以改变工作路径到的任何目录中。如果您希望使用者登入后只能在自己的家目录中活动,而不能进入其它目录中,可以使用 chroot 的功能。所谓的 chroot 就是将某一个目录变成使用者看到的根目录。例如,我们让使用者 alex 登入后,将 /home/alex 变成根目录。则 alex 在使用指令「cd /」时,还是会停留在 /home/alex。如果他使用指令「pwd」查看目前所在路径,则会显示 /。如此一来,我们就可以确保使用者不会到处乱跑,进入一些不该进入的地方。这个功能对于提升 FTP 的安全性有莫大的助益。
设定 chroot 的很简单,只要修改 /etc/ftpchroot即可。下面是一个范例:alex
@guest
john /var/ftp
@other /var/ftp其中第一行是设定使用者 alex 登入后,以自己的家目录为根目录。第二行的 @guest 表示只要是群组为 guest 的使用者,都以自己的家目录为根目录。而第三、四行分别表示使用者 john 及群组 other 都以 /var/ftp 为根目录。只要我们善用 chroot 的功能,就可以加强保护其它目录,让没有权利的使用者不可以进入目录中。建议您在开放 FTP 时,将所有使用者都加入 /etc/ftpchroot中。
我们平常在登入 FreeBSD 的 FTP 站台时,可以使用 anonymous 或是 ftp 这二个使用者登入,而且在登入时,任何密码都可以通过。这种可以使用 anonymous 登入的 FTP 就叫作匿名 FTP。anonymous 及 ftp 这二个账号是预设的匿名账号,当使用者以匿名登入时,器会将匿名账号对映到内的真实使用者 ftp。所以,如果您要提供匿名的 FTP ,请使用下列指令新增使用者账号 ftp:#pw adduser ftp
#mkdir /home/ftp
#chown ftp:ftp /home/ftp
我们建立了使用者 ftp 及其家目录 /home/ftp。使用 pw 指令所建立的使用者在 /etc/master.passwd 中的密码字段预设为 *,表示不可以登入。这个使用者除了匿名 FTP 外,将不可以使用 telnet、SSH、或是其它。
在新增了使用者 ftp 之后,我们就已经支持匿名 FTP 的功能了。现在您可以使用 anonymous 或 ftp 账号登入,而且不需任何密码。由于开放了匿名 FTP 后,任何人都可以登入,所以匿名账号登入后一定会使用 chroot,以将匿名使用者限制在家目录中。
除了强制使用 chroot 外,我们还可以在启动 FTP 时加上一些参数,以针对匿名使用者进行更多的限制。下表为启动 FTP 时可以使用的参数:
参数 | 意义 |
-M | 禁止匿名使用者建立新的目录。 |
-m | 允许匿名使用者覆写一个存在的档案。预设启动 FTP 时,并不允许匿名使用者覆写已经存在的档案。当使用者上传档案时,如果已经有同档名的档案存在,会自动为上传的档案改名。 |
-O | 让匿名使用者只能上传档案,下载档案的功能会被取消。 |
匿名使用者权限除上表中的几个参数外,一样可以使用 -r、-o 等用来控制一般使用者权限的参数来控制匿名使用者。匿名的 FTP 器可以说是危险的开始,如果您没有对匿名的使用者进行权限控制,在开于匿名 FTP 后,将会产生许多安全性的问题。
以上只是针对FreeBSD系统自带的简单ftpd进行的配置应用,如果希望架设更强大的FTP服务器,可以选用proftpd等工具来实现,而且在/usr/ports/ftp目录下就已经加入了proftpd这个工具,具体配置参考本人后续文章。
推荐系统
微软Win11原版22H2下载_Win11GHOST 免 激活密钥 22H2正式版64位免费下载
语言:中文版系统大小:5.13GB系统类型:Win11微软Win11原版22H2下载_Win11GHOST 免 激活密钥 22H2正式版64位免费下载系统在家用办公上跑分表现都是非常优秀,完美的兼容各种硬件和软件,运行环境安全可靠稳定。Win11 64位 Office办公版(免费)优化 1、保留 Edge浏览器。 2、隐藏“操作中心”托盘图标。 3、保留常用组件(微软商店,计算器,图片查看器等)。 5、关闭天气资讯。
Win11 21H2 官方正式版下载_Win11 21H2最新系统免激活下载
语言:中文版系统大小:4.75GB系统类型:Win11Ghost Win11 21H2是微软在系统方面技术积累雄厚深耕多年,Ghost Win11 21H2系统在家用办公上跑分表现都是非常优秀,完美的兼容各种硬件和软件,运行环境安全可靠稳定。Ghost Win11 21H2是微软最新发布的KB5019961补丁升级而来的最新版的21H2系统,以Windows 11 21H2 22000 1219 专业版为基础进行优化,保持原汁原味,系统流畅稳定,保留常用组件
windows11中文版镜像 微软win11正式版简体中文GHOST ISO镜像64位系统下载
语言:中文版系统大小:5.31GB系统类型:Win11windows11中文版镜像 微软win11正式版简体中文GHOST ISO镜像64位系统下载,微软win11发布快大半年了,其中做了很多次补丁和修复一些BUG,比之前的版本有一些功能上的调整,目前已经升级到最新版本的镜像系统,并且优化了自动激活,永久使用。windows11中文版镜像国内镜像下载地址微软windows11正式版镜像 介绍:1、对函数算法进行了一定程度的简化和优化
微软windows11正式版GHOST ISO镜像 win11下载 国内最新版渠道下载
语言:中文版系统大小:5.31GB系统类型:Win11微软windows11正式版GHOST ISO镜像 win11下载 国内最新版渠道下载,微软2022年正式推出了win11系统,很多人迫不及待的要体验,本站提供了最新版的微软Windows11正式版系统下载,微软windows11正式版镜像 是一款功能超级强大的装机系统,是微软方面全新推出的装机系统,这款系统可以通过pe直接的完成安装,对此系统感兴趣,想要使用的用户们就快来下载
微软windows11系统下载 微软原版 Ghost win11 X64 正式版ISO镜像文件
语言:中文版系统大小:0MB系统类型:Win11微软Ghost win11 正式版镜像文件是一款由微软方面推出的优秀全新装机系统,这款系统的新功能非常多,用户们能够在这里体验到最富有人性化的设计等,且全新的柔软界面,看起来非常的舒服~微软Ghost win11 正式版镜像文件介绍:1、与各种硬件设备兼容。 更好地完成用户安装并有效地使用。2、稳定使用蓝屏,系统不再兼容,更能享受无缝的系统服务。3、为
雨林木风Windows11专业版 Ghost Win11官方正式版 (22H2) 系统下载
语言:中文版系统大小:4.75GB系统类型:雨林木风Windows11专业版 Ghost Win11官方正式版 (22H2) 系统下载在系统方面技术积累雄厚深耕多年,打造了国内重装系统行业的雨林木风品牌,其系统口碑得到许多人认可,积累了广大的用户群体,雨林木风是一款稳定流畅的系统,一直以来都以用户为中心,是由雨林木风团队推出的Windows11国内镜像版,基于国内用户的习惯,做了系统性能的优化,采用了新的系统
雨林木风win7旗舰版系统下载 win7 32位旗舰版 GHOST 免激活镜像ISO
语言:中文版系统大小:5.91GB系统类型:Win7雨林木风win7旗舰版系统下载 win7 32位旗舰版 GHOST 免激活镜像ISO在系统方面技术积累雄厚深耕多年,加固了系统安全策略,雨林木风win7旗舰版系统在家用办公上跑分表现都是非常优秀,完美的兼容各种硬件和软件,运行环境安全可靠稳定。win7 32位旗舰装机版 v2019 05能够帮助用户们进行系统的一键安装、快速装机等,系统中的内容全面,能够为广大用户
番茄花园Ghost Win7 x64 SP1稳定装机版2022年7月(64位) 高速下载
语言:中文版系统大小:3.91GB系统类型:Win7欢迎使用 番茄花园 Ghost Win7 x64 SP1 2022.07 极速装机版 专业装机版具有更安全、更稳定、更人性化等特点。集成最常用的装机软件,集成最全面的硬件驱动,精心挑选的系统维护工具,加上独有人性化的设计。是电脑城、个人、公司快速装机之首选!拥有此系统
相关文章
- Freebsd 双硬盘无法启动的解决办法
- Win7开机显示乱码是怎么回事该怎么解决
- Win8系统如何检测分区表?
- Win10移动版成功连接一只蓝牙鼠标 鼠标左键才能用
- Windows7如何从硬件方面提升系统的安全性
- win10系统MSVCP140D.dll没有被指定在Windows上运行怎么解决?
- 安装使用apt-spy来为Ubuntu配置最快的软件源
- win7旗舰版升级到win10系统后卡在logo界面解决方法
- 如何重置Win8的文本调谐器ClearType让文字看起来更清晰
- 解决windows系统下php.ini邮件配置正确不发送邮件的问题
- Win8.1计算器在哪 快速打开Win8.1计算器方法
- win7系统google浏览器字体模糊看不清如何解决
- Win10周年更新版14393中战地4游戏窗口消失怎么办?
- Win10提示已经使用数字权利激活问题怎么解决
- win7系统运行程序软件时弹出360se.exe损坏图像窗口的解决方法图文教程
- Win10应用商店打不开?微软官方提供修复方法
- Win10 Mobile预览版14356修复bug和已知问题汇总
- Win7设备管理器打开后不断刷新问题的解决方法
热门系统
- 1华硕笔记本&台式机专用系统 GhostWin7 32位正式旗舰版2018年8月(32位)ISO镜像下载
- 2深度技术 Windows 10 x86 企业版 电脑城装机版2018年10月(32位) ISO镜像免费下载
- 3电脑公司 装机专用系统Windows10 x86喜迎国庆 企业版2020年10月(32位) ISO镜像快速下载
- 4雨林木风 Ghost Win7 SP1 装机版 2020年4月(32位) 提供下载
- 5深度技术 Windows 10 x86 企业版 六一节 电脑城装机版 版本1903 2022年6月(32位) ISO镜像免费下载
- 6深度技术 Windows 10 x64 企业版 电脑城装机版2021年1月(64位) 高速下载
- 7新萝卜家园电脑城专用系统 Windows10 x64 企业版2019年10月(64位) ISO镜像免费下载
- 8新萝卜家园 GhostWin7 SP1 最新电脑城极速装机版2018年8月(32位)ISO镜像下载
- 9电脑公司Ghost Win8.1 x32 精选纯净版2022年5月(免激活) ISO镜像高速下载
- 10新萝卜家园Ghost Win8.1 X32 最新纯净版2018年05(自动激活) ISO镜像免费下载
热门文章
常用系统
- 1电脑公司 装机专用系统Windows10 x64 企业装机版 版本1507 2022年4月(64位) ISO镜像高速下载
- 2雨林木风 Ghost Win7 SP1 装机版 2022年7月(32位) 提供下载
- 3电脑公司Ghost Win8.1 X64位 新春特别 纯净版2021年2月(自动激活) ISO镜像快速下载
- 4深度技术 Ghost Win7 x64 Sp1 电脑城纯净版2020年11月(64位) ISO镜像高速下载
- 5笔记本&台式机专用系统 Windows10 企业版 版本1903 2021年11月(64位) 提供下载
- 6笔记本&台式机专用系统 Windows10 企业版 版本1903 2022年4月(32位) ISO镜像快速下载
- 7新雨林木风 Windows10 x86 企业装机版2021年1月(32位) ISO镜像高速下载
- 8电脑公司Ghost Win7 Sp1 元旦特别 装机万能版2022年1月(32位) 提供下载
- 9新萝卜家园电脑城专用系统 Windows10 x64 元旦特别 企业版2021年1月(64位) ISO镜像免费下载
- 10深度技术 Ghost Win7 x64 Sp1 电脑城装机版2018年10月(64位) ISO镜像快速下载