同城约会| 杂志期刊| 小说| 两性论坛| 军事电影| 两性知识| 电脑知识| 汽车| 旅游| 收藏

在FreeBSD6.0中设定FTP服务器

来源: 作者: 出处:综艺读书 2006-03-12 
关 键 词:word  unix  os  opera  ie  

启动 FTP 服务器
  我们有二种方式启动 ftpd,一种是使用 standalone daemon,另一种是使用 inetd。inetd 是 UNIX 系统中一个强大的「超级服务器」,我们可以使用它来管理许多系统服务,例如 telnet、ssh、ftp 等。

大部份的系统服务都是使用 inetd 来启动,使用它的好处在于可以统一管理各种服务,并经由它来设定服务规则,例如是否要阻挡某些 IP 来源等。不过,使用 inetd 的方式缺点是每次有联机要求时,inetd 的 daemon 必须依联机的种类去执行相对映的指令,所以速度比较慢。


  另一种启动 FTP 的方式是使用 standalone daemon,也就是直接执行 FTP daemon,当它接收到新的联机时,就 fork() 出来处理,这种方式联机建立的速度较快,比较适合专门的 FTP 服务器。


  使用 inetd


  我们先来介绍如何使用 inetd 的方式启动 FTP 服务器。首先,请编辑 /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


  如果您要以独立的 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 start  如果您要停止 FTPD 服务,则使用下列指令:


  # /usr/local/etc/rc.d/ftpd.sh start  编辑欢迎讯息


  当我们联机到一个 FTP 站台时,我们可以看到二个欢迎讯息,一个是登入前的讯息,另一个是登入后的讯息。以下列讯息为例:


# ftp localhost
Trying ::1...
Connected to localhost.alexwang.com.
220- Welcome to My FTP Server.
220-
220- This is a welcome message
220-
220- Nice to see you.
220 vmware.alexwang.com FTP server (Version 6.00LS) ready.
Name (localhost:alex):
331 Password required for alex.
Password:
230- This is the message of the day.
230-
230- It will be shown after user login.
230 User alex logged in.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
  开头为 220- 的就是登入前的讯息,我们称它为欢迎讯息。以 230- 为开头的是登入后的讯息,我们称它为本日讯息 (Message of the day)。这二种讯息我们都可以自行设定。


  如果您要设定的是登入前的讯息,请新增一个档案 /etc/ftpwelcome,并将您的讯息写入该文件中。以下为上述范例中的讯息内容:


   Welcome to My FTP Server.
This is a welcome message
Nice to see you.



  您不需要写 220- 等数据,FTP 服务器会自动帮您加上这种代码。而登入后的讯息是存放在 /etc/ftpmotd,您可以编辑该档以进行设定。


  限制账号与联机来源


  我们可以设定限制某些账号不可以使用 FTP 登入。使用者在登入 FTP 服务器时,有几个规则会拒绝该账号登入:


如果 /var/run/nologin 存在,则所有账号都不可以登入。这个档案可以用来暂时停止 FTP 服务。
使用者一定要有密码才能登入,没有密码的使用者无法登入。
使用者名称不可以出现在 /etc/ftpusers 中。
使用者群组不可以出现在 /etc/ftpusers 中。
使用者所使用的 shell 必须要时合法的 shell。合法的 shell 会被定义在 /etc/shells 中。
除了匿名模式外,使用者名称不可以是 ftp 或 anonymous。关于匿名模式,我们会在下一小节中说明。
  /etc/ftpusers 定义了不可以使用 FTP 服务的使用者及群组。我们来看一下该档案的内容:


   # $FreeBSD: src/etc/ftpusers,v 1.13 2004/06/30 16:47:08 maxim Exp $
#
# list of users disallowed any ftp access.
# read by ftpd(8).
root
toor
daemon
operator
bin
tty
kmem
games
news
@guest
...



  我们可以看到该档案中已经有一些使用者不可以登入 FTP。这些使用者都是系统预设的账号,我们也可以经由修改它来加入其它使用者。


  在 /etc/ftpusers 中,如果开头是 "@" 表示群组名称。例如上述档案内容中的 @guest 表示群组 guest 不可以登入系统。


  除了控制使用者账号外,在「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



  我们在上述范例中拒绝 IP 210.122.13.5 及 evil.cracker 网域的主机使用 FTP,并在最后一行设定其它来源都许可。


  如果您要设定只有某些来源可以使用 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



  我们设定了只有本机 (localhost)、192.168.0.x、及 my.friend.com 才可以使用 FTP,其它联机都拒绝。


   修改登陆的目录路径 chroot


  一般使用者登入后,预设会进入自己的家目录中。使用者可以改变工作路径到系统的任何目录中。如果您希望使用者登入后只能在自己的家目录中活动,而不能进入其它系统目录中,可以使用 chroot 的功能。


  所谓的 chroot 就是将某一个目录变成使用者看到的根目录。例如,我们让使用者 alex 登入后,将 /home/alex 变成根目录。则 alex 在使用指令「cd /」时,还是会停留在 /home/alex。如果他使用指令「pwd」查看目前所在路径,则会显示 /。如此一来,我们就可以确保使用者不会到处乱跑,进入一些不该进入的地方。这个功能对于提升 FTP 的安全性有莫大的助益。


  设定 chroot 的方法很简单,只要修改 /etc/ftpchroot 即可。chroot 的设定是以使用者、群组的基础,以下是几个设定范例:


   alex
@guest
john /var/ftp
@other /var/ftp



  上述范例中的第一行是设定使用者 alex 登入后,以自己的家目录为根目录。第二行的 @guest 表示只要是群组为 guest 的使用者,都以自己的家目录为根目录。而第三、四行分别表示使用者 john 及群组 other 都以 /var/ftp 为根目录。


  只要我们善用 chroot 的功能,就可以加强保护系统其它目录,让没有权利的使用者不可以进入系统目录中。建议您在开放 FTP 服务时,将所有使用者都加入 /etc/ftpchroot 中。

更多文章 更多内容请看Freebsd 架站  Freebsd频道  FreeBSD使用教程专题,或进入讨论组讨论。
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
综艺读书宗旨
相关专题
·FTP服务器 (5017篇文章)
·双核服务器技术 (5594篇文章)
·FTP协议 (614篇文章)
·Freebsd 架站 (20篇文章)
·网站服务器的选型 (6537篇文章)
·网吧流媒体服务器 (5264篇文章)
·刀片服务器专题 (4594篇文章)
·网吧服务器专栏 (4478篇文章)
·服务器配置专栏 (8912篇文章)
·IIS服务器应用技巧 (5071篇文章)
热点标签: word  unix  os  opera  ie  
阅读排行榜
最新技术文档
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
百度推荐,商机无限
搜索您感兴趣的内容
Web 全站
综艺电脑频道编辑信箱  告诉我们您想看的专题或文章

Google

友情互链 | 收藏本站 | 联系我们 | 在线留言 | 京ICP备08008424号|