当前位置: 首页 > 图文教程 > 服务器 > Linux服务器 > 在FreeBSD6.0中设定FTP服务器

Linux服务器
Linux上双网卡绑定方法(Suse9SP3)
Linux操作系统调优参数的意义
Linux下使用SSH客户端及其Sftp文件传送
教你恢复被误删除的Linux文件
SQL Server注入大全及防御
Linux无法解析域名的解决办法
Linux系统下安装和配置MyEclipse的方法
Ubuntu下VirtualBox 1.4.0设置文件共享
Windows与Linux系统共享StarDict字典文件
修改Linux下相关的登陆信息
Windows通过SecureCRT远程登录Linux主机
Linux操作系统如何修改SWAP交换区的大小
Linux操作系统下为Apache目录添加密码
Linux时间设置与同步(NTP)
Linux内核补丁AMD旁路转换缓冲(TLB)错误
Linux架设DHCP服务器的方法
Fedora 8下Apache配置与管理
Linux操作系统下用单网卡捆绑双IP的方法
Ubuntu Linux系统环境变量配置文件
SUSE Linux中将Tomcat作为Service运行

Linux服务器 中的 在FreeBSD6.0中设定FTP服务器


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-18   浏览: 39 ::
收藏到网摘: n/a

启动FTP服务器
我们有二种方式启动ftpd,一种是使用standalonedaemon,另一种是使用inetd。inetd是UNIX系统中一个强大的「超级服务器」,我们可以使用它来管理许多系统服务,例如telnet、ssh、ftp等。大部份的系统服务都是使用inetd来启动,使用它的好处在于可以统一管理各种服务,并经由它来设定服务规则,例如是否要阻挡某些IP来源等。不过,使用inetd的方式缺点是每次有联机要求时,inetd的daemon必须依联机的种类去执行相对映的指令,所以速度比较慢。

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

使用inetd

我们先来介绍如何使用inetd的方式启动FTP服务器。首先,请编辑/etc/inetd.conf,将ftp设定开头的#移除:

ftpstreamtcpnowaitroot/usr/libexec/ftpdftpd-l
ftpstreamtcp6nowaitroot/usr/libexec/ftpdftpd-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$1in
start)
echo"StartingFTPD"
$ftpd_program$ftpd_flags
;;
stop)
echo"StoppingFTPD"
killallftpd
;;
restart)
$0stop
sleep1
$0start
;;
esac


编辑完后,我们必须将该档案变成可执行:

#chmod755/usr/local/etc/rc.d/ftpd.sh接下来,您就可以使用下列指令启动FTPD了:

#/usr/local/etc/rc.d/ftpd.shstart如果您要停止FTPD服务,则使用下列指令:

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

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

#ftplocalhost
Trying::1...
Connectedtolocalhost.alexwang.com.
220-WelcometoMyFTPServer.
220-
220-Thisisawelcomemessage
220-
220-Nicetoseeyou.
220vmware.alexwang.comFTPserver(Version6.00LS)ready.
Name(localhost:alex):
331Passwordrequiredforalex.
Password:
230-Thisisthemessageoftheday.
230-
230-Itwillbeshownafteruserlogin.
230Useralexloggedin.
RemotesystemtypeisUNIX.
Usingbinarymodetotransferfiles.
ftp>
开头为220-的就是登入前的讯息,我们称它为欢迎讯息。以230-为开头的是登入后的讯息,我们称它为本日讯息(Messageoftheday)。这二种讯息我们都可以自行设定。

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

WelcometoMyFTPServer.
Thisisawelcomemessage
Nicetoseeyou.


您不需要写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,v1.132004/06/3016:47:08maximExp$
#
#listofusersdisallowedanyftpaccess.
#readbyftpd(8).
root
toor
daemon
operator
bin
tty
kmem
games
news
@guest
...


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

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

除了控制使用者账号外,在「inetd」模式下,我们还可以控制联机来源。所有FreeBSD中由inetd所启动的服务都可以经由修改/etc/hosts.allow以使用TCPWrappd来限制联机来源。下列为预设的/etc/hosts.allow内容:

#Provideasmallamountofprotectionforftpd
ftpd:localhost:allow
ftpd:.nice.guy.example.com:allow
ftpd:.evil.cracker.example.com:deny
ftpd:ALL:allow


如果我们要限制某几个IP或网域不能使用FTP,可以使用下列范例:

#Provideasmallamountofprotectionforftpd
ftpd:localhost:allow
ftpd:210.122.13.5:deny
ftpd:.evil.cracker:deny
ftpd:ALL:allow


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

如果您要设定只有某些来源可以使用FTP,而拒绝大多数的主机,则可以设定:

#Provideasmallamountofprotectionforftpd
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中。